我目前正在使用shinydashboard,但我想有不同的侧边栏菜单与主体内容相关联。shinydashboard能做到吗?
例如:我想要这样的东西https://gallery.shinyapps.io/CDCPlot/
看看当你点击导航栏选项时,侧边栏菜单和主体是如何变化的。
这在shinydashboard中是可能的吗?我喜欢闪亮仪表盘的外观和感觉,不想再回到闪亮的样子。
底层代码在这里:https://github.com/NLMichaud/WeeklyCDCPlot/blob/master/ui.R
并使用选项卡和导航条。在shinydashboard中也有类似的东西吗?
有代码的例子吗?
谢谢!
您所问的问题很棘手,可能不可能,因为在shinydashboard中,顶层导航控件位于dashboardSidebar(左侧)内,而内容包含在dashboardBody(右侧)内。如果你把一个navMenu放在dashboardBody里面,它就必须属于一个特定的侧边栏项,并且在你以后点击另一个侧边栏项时就会消失。
你可能需要改变你想要实现这一点的方式。根据您想要做的事情,您可以尝试:
创建一个带有菜单项的dashboardSidebar,这些菜单项通常放在top-menu中,并且您可以将该菜单的所有控件放在关联的tabItem下。您甚至可以通过在服务器中使用renderMenu()
使其成为动态的。R:
output$menu <- renderMenu({
sidebarMenu(id = "sidebMenu",
menuItem("Load Data", tabName = "loadData", icon = icon("database"),
actionButton("press", "Press me")
)
})
这样做的缺点可能是你可以在侧边栏菜单中放置的控件数量有限,而它看起来仍然很好。但这就是仪表盘的制作方法。
或
与dashboardSidebar(disable = TRUE)
一起使用没有侧边栏的全屏仪表板,并以与您提到的示例类似的方式使用导航菜单。您将没有shinydashboard的侧边栏,您必须像示例中一样创建自己的侧边栏。这样,你就可以享受到shinydashboard提供的其他功能,如通知、框、皮肤、状态框等。但这只是一个建议,你自己决定。
也许你想要这样:
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)