我想在一个闪亮的应用程序中垂直堆叠2个绘图,并使用plotly使它们具有交互性。
我有以下代码:
library(shiny)
library(tidyverse)
library(patchwork)
library(plotly)
ui <- fluidPage(
tabsetPanel(
tabPanel('Plot', plotOutput('plot')),
tabPanel('Plot2', plotly::plotlyOutput('plot2')),
tabPanel('Plot3', plotly::plotlyOutput('plot3'))
)
)
server <- function(input, output) {
output$plot <- renderPlot({
p1 <- ggplot(data = mtcars, aes(x = mpg, y = cyl)) +
geom_line()
p2 <- ggplot(data = mtcars, aes(x = mpg, y = disp)) +
geom_line()
p1 / p2
})
output$plot2 <- renderPlotly({
p1 <- ggplot(data = mtcars, aes(x = mpg, y = cyl)) +
geom_line()
})
output$plot3 <- renderPlotly({
p1 <- ggplot(data = mtcars, aes(x = mpg, y = cyl)) +
geom_line()
p2 <- ggplot(data = mtcars, aes(x = mpg, y = disp)) +
geom_line()
p1 / p2
})
}
# Run the application
shinyApp(ui = ui, server = server)
正如您所看到的,当仅将ggplot2与拼凑包("Plot"(一起使用时,它可以按预期工作,并垂直堆叠p1和p2。此外,在";Plot2";当使用ggplot2仅绘制p1时,它将与plotly交互。
然而,在";Plot3";当试图转换"0"的组合图(p1/p2(时;绘图";使用patrice创建以使用plotly进行交互,它只将p2图绘制为交互式。
关于如何使用ggplot2创建垂直堆叠的图形,然后在闪亮的应用程序中与plotly进行交互,有什么建议吗?
在R绘图中,您可以通过subplot
函数实现这一点:
library(shiny)
library(tidyverse)
library(patchwork)
library(plotly)
ui <- fluidPage(
tabsetPanel(
tabPanel('Plot', plotOutput('plot')),
tabPanel('Plot2', plotly::plotlyOutput('plot2')),
tabPanel('Plot3', plotly::plotlyOutput('plot3'))
)
)
server <- function(input, output) {
output$plot <- renderPlot({
p1 <- ggplot(data = mtcars, aes(x = mpg, y = cyl)) +
geom_line()
p2 <- ggplot(data = mtcars, aes(x = mpg, y = disp)) +
geom_line()
p1 / p2
})
output$plot2 <- renderPlotly({
p1 <- ggplot(data = mtcars, aes(x = mpg, y = cyl)) +
geom_line()
})
output$plot3 <- renderPlotly({
p1 <- ggplot(data = mtcars, aes(x = mpg, y = cyl)) +
geom_line()
p2 <- ggplot(data = mtcars, aes(x = mpg, y = disp)) +
geom_line()
subplot(p1, p2, nrows = 2)
})
}
# Run the application
shinyApp(ui = ui, server = server)
有关详细信息,请参阅此。