闪亮的 ggplotly 图的动态高度
Dynamic height of shiny ggplotly plot
我有一个基于 geom_col()
的 ggplotly
输出,其柱数变化很大。我想对其进行配置,以便无论有多少个条形图,条形图之间的间距(以及条形图的宽度)都保持不变,这意味着要更改绘图高度。以下是基于 但对我没有影响。任何建议表示赞赏。
require(tidyverse)
require(shiny)
require(plotly)
ui = fluidPage(
sidebarPanel(width = 3,
sliderInput('count', 'count', min = 3, max = 100, value = 100, step = 25)
),
mainPanel(width = 9,
div(plotlyOutput("plot", height = '200vh'),
style='height:90vh !important; overflow:auto !important; background-color:yellow;')
)
)
server <- function(input, output, session) {
output$plot = renderPlotly({
d = data.frame(x = head(sentences, input$count), y = rlnorm(input$count, meanlog = 5))
p = d %>% ggplot(aes(fct_reorder(x, y), y)) +
geom_col(width = 0.1, col='grey90') + geom_point(size = 2) +
coord_flip() +
theme_minimal(base_size = 12) + theme(panel.grid.major.y = element_blank())
pltly = ggplotly(p) %>% layout(xaxis = list(side ="top" ))
pltly$height = nrow(d) * 15
pltly
})
}
shinyApp(ui = ui, server = server,
options = list(launch.browser = FALSE))
您可以在ggplotly()
或plot_ly()
中指定width/height:
library(tidyverse)
library(shiny)
library(plotly)
ui = fluidPage(
sidebarPanel(width = 3,
sliderInput('count', 'count', min = 3, max = 100, value = 100, step = 25)
),
mainPanel(width = 9,
plotlyOutput("plot"),
)
)
server <- function(input, output, session) {
output$plot = renderPlotly({
d = data.frame(x = head(sentences, input$count), y = rlnorm(input$count, meanlog = 5))
p = d %>% ggplot(aes(fct_reorder(x, y), y)) +
geom_col(width = 0.1, col='grey90') + geom_point(size = 2) +
coord_flip() +
theme_minimal(base_size = 12) + theme(panel.grid.major.y = element_blank())
pltly = ggplotly(p, height = nrow(d) * 15) %>% layout(xaxis = list(side ="top" ))
pltly
})
}
shinyApp(ui = ui, server = server, options = list(launch.browser = TRUE))
但是,您可能想要指定更大的最小高度,使用第一个选项,绘图会变得很窄。
我有一个基于 geom_col()
的 ggplotly
输出,其柱数变化很大。我想对其进行配置,以便无论有多少个条形图,条形图之间的间距(以及条形图的宽度)都保持不变,这意味着要更改绘图高度。以下是基于
require(tidyverse)
require(shiny)
require(plotly)
ui = fluidPage(
sidebarPanel(width = 3,
sliderInput('count', 'count', min = 3, max = 100, value = 100, step = 25)
),
mainPanel(width = 9,
div(plotlyOutput("plot", height = '200vh'),
style='height:90vh !important; overflow:auto !important; background-color:yellow;')
)
)
server <- function(input, output, session) {
output$plot = renderPlotly({
d = data.frame(x = head(sentences, input$count), y = rlnorm(input$count, meanlog = 5))
p = d %>% ggplot(aes(fct_reorder(x, y), y)) +
geom_col(width = 0.1, col='grey90') + geom_point(size = 2) +
coord_flip() +
theme_minimal(base_size = 12) + theme(panel.grid.major.y = element_blank())
pltly = ggplotly(p) %>% layout(xaxis = list(side ="top" ))
pltly$height = nrow(d) * 15
pltly
})
}
shinyApp(ui = ui, server = server,
options = list(launch.browser = FALSE))
您可以在ggplotly()
或plot_ly()
中指定width/height:
library(tidyverse)
library(shiny)
library(plotly)
ui = fluidPage(
sidebarPanel(width = 3,
sliderInput('count', 'count', min = 3, max = 100, value = 100, step = 25)
),
mainPanel(width = 9,
plotlyOutput("plot"),
)
)
server <- function(input, output, session) {
output$plot = renderPlotly({
d = data.frame(x = head(sentences, input$count), y = rlnorm(input$count, meanlog = 5))
p = d %>% ggplot(aes(fct_reorder(x, y), y)) +
geom_col(width = 0.1, col='grey90') + geom_point(size = 2) +
coord_flip() +
theme_minimal(base_size = 12) + theme(panel.grid.major.y = element_blank())
pltly = ggplotly(p, height = nrow(d) * 15) %>% layout(xaxis = list(side ="top" ))
pltly
})
}
shinyApp(ui = ui, server = server, options = list(launch.browser = TRUE))
但是,您可能想要指定更大的最小高度,使用第一个选项,绘图会变得很窄。