r语言 - 使用闪亮服务在数据透视表中启用滚动条



我使用的是承载在Red Hat Linux版本6.5上的R-3.2.0,带有shiny的软件包(版本0.12.0)。我试图利用闪亮的仪表板功能来设计一些报告。RStudio版本为0.98.1103

我已经成功设置ui。R和服务器。Rui。R -:

ibrary(shinydashboard)
library(htmlwidgets)
library(rpivotTable)
library(leaflet)
dashboardPage(
  dashboardHeader(title="Reports",
                  dropdownMenu(type = "task",
                               messageItem(
                                 from = "Download",
                                 message = "test",
                                 icon = icon("gear")
                               ),
                               messageItem(
                                 "Download",
                                 message = "TEST",
                                 icon = icon("life-ring"),
                                 href= "http://www.google.com"
                               )
                  )
    ),
  dashboardSidebar(
    sidebarMenu(
     menuItem("Srts", tabName = "ServiceItems", icon = icon("dashboard"))
    )
    ),
  dashboardBody(
                tags$head(tags$style(
                type = 'text/css',
                '#test{ overflow-x: scroll; }')),
                rpivotTableOutput('PivotTable')
               )
             )

服务器。R -:

library(shiny)
library(ggplot2)
library(wordcloud)
library(devtools)
library(htmlwidgets)
library(rpivotTable)
library(leaflet)
shinyServer(function(input, output) {
  PivotTable <- read.csv("Book2.csv",head=TRUE,sep= ',')
  output$PivotTable <- rpivotTable::renderRpivotTable({
  rpivotTable(PivotTable, rows="Ar", col="DTM", aggregatorName="Count",
              vals="Ar", rendererName="Table")})
  tableFirst<-as.data.frame(sort(table(PivotTable$Area),decreasing=TRUE))
})

在仪表板主体中启用滚动的以下代码取自https://github.com/smartinsightsfromdata/rpivotTable/issues/19:-

        tags$head(tags$style(
        type = 'text/css',
        '#test{ overflow-x: scroll; }')),
        rpivotTableOutput('PivotTable')

我面临的问题是,为帮助滚动而添加的代码不起作用。我已经剥离了所有标签,布局等代码,但我仍然能够让滚动工作。

我观察到,如果我删除dashboardPage命令,滚动确实工作,但显示非常尴尬,不真正像样。


然而,当我组合如下代码(在RStudio中)并运行滚动工作得很好。

library(shiny)
library(shinydashboard)
library(rpivotTable)
library(ggplot2)
PivotTable <- read.csv("Book2.csv",head=TRUE,sep= ',')
header <-   dashboardHeader(title="Reports",
                  dropdownMenu(type = "task",
                               messageItem(
                                 from = "Download",
                                 message = "test",
                                 icon = icon("gear")
                               ),
                               messageItem(
                                 "Download",
                                 message = "TEST",
                                 icon = icon("life-ring"),
                                 href= "http://www.google.com"
                               )
                  )
    )
sidebar <- dashboardSidebar()
body <- dashboardBody(
                      tags$head(tags$style(HTML('
                      .skin-blue.main-header .logo {
                      background-color: #3c8dbc;
                     }
                     .skin-blue .main-header .logo:hover {
                     background-color: #3c8dbc;
                     }
                   '))
                     ),
                     tags$head(tags$style(type = 'text/css',
                    '#test{ overflow-x: scroll; }')),
                     rpivotTableOutput("test")
                     )            
                     shinyApp(
                     ui = dashboardPage(header, sidebar, body),
                     server = function(input, output) {
                     output$test <- rpivotTable::renderRpivotTable({
                     rpivotTable(PivotTable, rows="Ar", col="DTM",                     aggregatorName="Count",vals="Ar", rendererName="Table")})
                })

然而,我不能提供这个作为最终的解决方案,因为需要它的业务用户并不擅长在RStudio上复制和粘贴代码(如果有一种可能的方法,我可以像通常那样使用组合代码,我也可以考虑)。


有人能帮我理解我的原始代码阻止滚动的问题吗?

问题是你的CSS选择器,否则一切看起来都很好。您在ID为test的元素上设置滚动属性,但我在示例中找不到具有此ID的元素。试试这样做:

library(shinydashboard)
ui <- dashboardPage(
  dashboardHeader(title = "Basic dashboard"),
  dashboardSidebar(),
  dashboardBody(
    tags$head(
      tags$style(
        HTML("
            #myScrollBox{ 
              overflow-y: scroll; 
              overflow-x: hidden; 
              height:120px;
            }
             ")
      )
    ),
    # Boxes need to be put in a row (or column)
    fluidRow(
      div(id="myScrollBox",
        plotOutput("plot1", height = 250)),
      box(
        title = "Controls",
        sliderInput("slider", "Number of observations:", 1, 100, 50)
      )
    )
  )
)
server <- function(input, output) {
  set.seed(122)
  histdata <- rnorm(500)
  output$plot1 <- renderPlot({
    data <- histdata[seq_len(input$slider)]
    hist(data)
  })
}
shinyApp(ui, server)

你需要将CSS选择器更改为你想要放置滚动条的元素,在本例中为"myScrollBox"

您应该考虑的唯一一件事是在CSS代码之前传递完全相同的id,因此在此代码中将#test替换为#透视表,然后…你的代码应该可以工作…

tags$head(tags$style(
    type = 'text/css',
    '#test{ overflow-x: scroll; }')),
    rpivotTableOutput('PivotTable')

相关内容

  • 没有找到相关文章

最新更新