shinydashboard可以使用Tabpanels并有导航栏吗?

时间:2015-09-15 21:44:52

标签: r shiny shinydashboard

我目前正在使用shinydashboard,但我希望在主体中有与内容相关的不同sidbar menues。 shinydashboard可以实现吗?

例如:

我想要这样的东西 https://gallery.shinyapps.io/CDCPlot/

了解当您单击侧栏菜单更改的导航栏选项以及正文时的方式。

这可能在shinydashboad吗?我喜欢shinydashboard的外观和感觉,宁愿不回光泽。

底层代码在这里:https://github.com/NLMichaud/WeeklyCDCPlot/blob/master/ui.R

并使用tabpanels和navbar。在shinydashboard中有类似的东西吗?

带代码的任何示例?

谢谢!

2 个答案:

答案 0 :(得分:2)

您要问的是棘手的,可能无法实现,因为在shinydashboard中,顶级导航控件位于dashboardSidebar内(左侧),内容包含在dashboardBody内(右侧)。如果在dashboardBody中放置navMenu,它必须属于特定的侧边栏项,如果您稍后单击另一个侧边栏项,它将消失。

您可能需要更改实现此目的的方式。根据您的要求,您可以尝试:

创建一个dashboardSidebar,其中包含通常位于顶层菜单中的菜单项,您可以将该菜单的所有控件放在关联的tabItem下。您甚至可以在server.R中使用renderMenu()使其全部动态:

output$menu <- renderMenu({
   sidebarMenu(id = "sidebMenu",
       menuItem("Load Data", tabName = "loadData", icon = icon("database"),
          actionButton("press", "Press me")
   )
})

这样做的缺点可能是侧边栏菜单中放置的控件数量有限,但看起来还不错。但这就是仪表板的制作方式。

使用不带侧栏和dashboardSidebar(disable = TRUE)的全屏仪表板,并使用与您提到的示例中类似的方式使用导航菜单。你将没有shinydashboard的侧边栏,你必须像你的例子一样制作自己的侧边栏。这样,你可能仍然喜欢shinydashboard提供的其他功能,如通知,盒子,皮肤,状态框等。但这只是一个建议,它取决于你。

希望这有帮助。

答案 1 :(得分:0)

也许您想要类似的东西:

library(shiny)
library(shinydashboard)
library(shinydashboardPlus)
ui <- fluidPage( navbarPage(title = "AA Tester", windowTitle ="AA Tester", id="tabactive", 
                            tabPanel("Explore Funds",icon = icon("table"),tags$body(class="skin-blue sidebar-mini control-sidebar-open",
                                                                                    dashboardPagePlus(sidebar_fullCollapse=TRUE,
                                                                                                                                                          dashboardHeaderPlus(disable = T,
                                                                                                                                                                              enable_rightsidebar = TRUE,
                                                                                                                                                                              rightSidebarIcon = "gears"





                                                                                                                                                          ),


                                                                                                                                                          dashboardSidebar(),

                                                                                                                                                          dashboardBody(

                                                                                                                                                          ),
                                                                                                                                                          rightsidebar = rightSidebar(
                                                                                                                                                            background = "dark",
                                                                                                                                                            rightSidebarTabContent(
                                                                                                                                                              id = 1,
                                                                                                                                                              title = "Controllers",
                                                                                                                                                              icon = "desktop",
                                                                                                                                                              active = TRUE





                                                                                                                                                            ))


                            ))),
                            tabPanel("Holdings Analysis",icon = icon("line-chart"))))
server <- function(input, output, session) {}
shinyApp(ui = ui, server = server)