如何使用通用滚动条可视化宽图,并使用左侧的冻结块对它们进行“分组”?

问题描述 投票:0回答:1

我有一个闪亮的 MWE,如下所示,我在其中显示了一些图(从应用程序中的其他选项卡传递)。

我能够做到这一点:

library(shiny)
library(ggplot2)


test_ui <- function(id){
  ns <- NS(id)
  tagList(
      plotOutput(outputId = ns("plot1"), height=100, width=1500),
      plotOutput(outputId = ns("plot2"), height=100, width=1500),
      plotOutput(outputId = ns("plot3"), height=100, width=1200),
      plotOutput(outputId = ns("plot4"), height=100, width=1200)
  )
}


test_server <- function(id){
  moduleServer(id, function(input, output, session){
    ns <- session$ns
    output$plot1 <- renderPlot({
      ggplot(mtcars, aes(x = mpg, y = drat)) +
      geom_point()
    })
    output$plot2 <- renderPlot({
      ggplot(mtcars, aes(x = mpg, y = qsec)) +
      geom_point()
    })
    output$plot3 <- renderPlot({
      ggplot(mtcars, aes(x = disp, y = drat)) +
      geom_point()
    })
    output$plot4 <- renderPlot({
      ggplot(mtcars, aes(x = disp, y = qsec)) +
      geom_point()
    })
  })
}

demoApp <- function() {
  ui <- fluidPage(
    test_ui("demo")
  )
  server <- function(input, output, session) {
    test_server("demo")
  }
  shinyApp(ui, server)  
}

demoApp()

显示如下图:

fig1

不过,我想要的是完成与此更类似的事情:

fig2

我在左侧冻结了(不可滚动)块,其中包含“名称”和“组”图,以及每个组的 x 轴的公共滚动条。

这可能吗?可以用简单的方法来完成吗?我不知道如何开始。

r ggplot2 shiny
1个回答
0
投票

bslib 可以轻松地让您做到这一点,如果您愿意,还可以使用可折叠的侧边栏:https://rstudio.github.io/bslib/articles/sidebars/index.html

library(bslib)

demoApp <- function() {
  ui <- page_fillable(
    layout_sidebar(
      sidebar = sidebar(
        # any content separate from the demo
      ),
      card(test_ui("demo"))
    ),
    layout_sidebar(
      sidebar = sidebar(
        # any content separate from the demo2
      ),
      card(test_ui("demo2"))
    )
  )
  server <- function(input, output, session) {
    test_server("demo")
    test_server("demo2")
  }
  shinyApp(ui, server)  
}
© www.soinside.com 2019 - 2024. All rights reserved.