锁定R闪亮仪表板侧边栏(shinydashboard)

时间:2015-06-23 21:22:39

标签: r shiny

我在R中构建一个闪亮的仪表板时遇到困难(使用shinydashboard包)。我想锁定我的侧边栏,以便在查看我的标签内容时不会滚动,但我不确定如何将其关闭。

例如,以下代码块将创建一个长滚动的仪表板。锁定侧边栏会很棒,这样您在滚动浏览长度较长的数据表时仍然可以看到菜单选项卡。

library(ggplot2)  ## for mpg dataset
library(shinydashboard)

## ui
ui <- dashboardPage(
  dashboardHeader(title="MPG Data"), 
  dashboardSidebar(sidebarMenu(menuItem("MPG", tabName="mpg"))), 
  dashboardBody(tabItems(tabItem(tabName="mpg", fluidRow(tableOutput("mpgTable"))))))

## server
server <- function(input, output) {
  output$mpgTable <- renderTable({mpg})
}

## launch dashboard 
shinyApp(ui, server)

3 个答案:

答案 0 :(得分:9)

**免责声明:无论如何我不是css专家

您可以在DT中为实际表格设置选项,但是如果您希望实际仪表板中的选项卡可以从侧边栏中滚动(假设您没有使用基于代码的导航栏),请尝试以下操作:

css看起来像这样:

.sidebar {
    color: #FFF;
    position: fixed;
    width: 220px;
    white-space: nowrap;
    overflow: visible;
}

如果你的'www'文件夹中有.css文件,你可以从具有许多功能的ui中调用它;所以我们假设您的文件名为“style.css”。

现在,ui看起来像这样:

dashboardPage(
  dashboardHeader(title="MPG Data"),
  dashboardSidebar(
    sidebarMenu(
      menuItem("MPG",tabName="mpg")
    )
  ),
  dashboardBody(
    #here's where you throw the css into the header
    tags$head(
      includeCSS('www/style.css')
      ),
    tabItems(
      tabItem(tabName="mpg",
        fluidRow(tableOutput("mpgTable"))
        )
      )
    )
  )

服务器端没有任何内容发生变化,但您可能希望使用DT或表中的设置选项进行检查,以便更轻松地处理数据。 DT包装参考。

希望这有帮助。

答案 1 :(得分:7)

你应该在ui侧边栏添加style =“position:fixed; overflow:visible”。

library(ggplot2)  ## for mpg dataset
library(shinydashboard)

## ui
ui <- dashboardPage(
  dashboardHeader(title="MPG Data"), 
  dashboardSidebar(
    sidebarMenu(style = "position: fixed; overflow: visible;",
      menuItem("MPG", tabName="mpg"))), 
  dashboardBody(
    tabItems(
      tabItem(tabName="mpg", 
       fluidRow(tableOutput("mpgTable"))))))

## server
server <- function(input, output) {
  output$mpgTable <- renderTable({mpg})
}

## launch dashboard 
shinyApp(ui, server)

答案 2 :(得分:0)

@HipHopPhysician你可以发布你想要运行的内容吗?否则这里是使用DT作为解决方法的最简单方法......有很多选项需要设置;所以我要给出默认值:

library(ggplot2)
library(DT)
library(shinydashboard)

ui <- 
  dashboardPage(
    dashboardHeader(title="MPG Data"),
    dashboardSidebar(
      sidebarMenu(
        menuItem("MPG",tabName="mpg")
        )
      ),
    dashboardBody(
      #here's where you throw the css into the header
      tags$head(
        includeCSS('www/style.css')
      ),
      tabItems(
        tabItem(tabName="mpg",
                dataTableOutput("mpgTable"))
      )
    )
  )

server <- function(input, output) {
  output$mpgTable <- renderDataTable({ mpg })
}