R闪亮-组合ggplot2和plotly以垂直堆叠2个子画面



我想在一个闪亮的应用程序中垂直堆叠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"(一起使用时,它可以按预期工作,并垂直堆叠p1p2。此外,在";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)

有关详细信息,请参阅此。

最新更新