使用shinydashboard中的插图,按钮太大而看不到绘图 [英] Using Plotly in shinydashboard, buttons too large to see plot

查看:0
本文介绍了使用shinydashboard中的插图,按钮太大而看不到绘图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在我的shinydashboard应用程序(https://plot.ly/r/shiny-tutorial/)中使用普洛特利的闪亮教程。

由于某种原因,每当我运行应用程序并打开Ploly选项卡时,如果我尝试与绘图交互,通常位于Ploly绘图右上角的按钮会变得太大,它们会遮住绘图。

以下是我的用户界面代码:

library(ggplot2)
library(plyr)
library(rCharts)
library(shiny)
library(xtable)
library(shinythemes)
library(shinydashboard)
library(dplyr)
library(plotly)
PopData <- read.csv("CountyPopLong.csv", header=T)
ChangeData <- read.csv("CountyChangeLong.csv", header=T)
CountyPop <- read.csv("CountyPopWide.csv", header=T)
CountyChange <- read.csv("CountyChangeWide.csv", header=T)
CntyInfo <- read.csv("CntyCensusInfo.csv", header=T)
CityPop <- read.csv("CityData.csv", header=T)
CityPopLong <- read.csv("CityPop.csv", header=T)
CityChange <- read.csv("CityChangeWide.csv", header=T)
CityChangeLong <- read.csv("CityChangeLong.csv", header=T)
CityInfo <- read.csv("CityCensusInfo.csv", header=T)
TwpInfo <- read.csv("TwpCensusInfo.csv", header=T)
TwpPop <- read.csv("TownshipPopWide.csv", header=T)
TwpPopLong <- read.csv("TownshipPopLongWithCounty.csv", header=T)
TwpChange <- read.csv("TwpChangeWide.csv", header=T)
TwpChangeLong <- read.csv("TwpChangeLong.csv", header=T)
MHIdata <- read.csv("CountyMHILong.csv", header=T)
PCIdata <- read.csv("CountyPCILong.csv", header=T)
CityACS <- read.csv("CityACSLong.csv", header=T)
TwpACS <- read.csv("TwpACSLong.csv", header=T)
CountyBGLong <- read.csv("CountyBG2000to2010long.csv", header=T)
CityBGLong <- read.csv("CityBG2000to2010long.csv", header=T)
TwpBGLong <- read.csv("TwpBrainGain2000to2010long.csv", header=T)
CountyBG90Long <- read.csv("CountyBG1990to2000long.csv", header=T)
CityBG90Long <- read.csv("CityBG1990to2000long.csv", header=T)
TwpBG90Long <- read.csv("TwpBrainGain1990to2000long.csv", header=T)
options(RCHART_WIDTH=500, RCHART_HEIGHT=500)

dashboardPage(
      header <- dashboardHeader(

      title = "CST Datapage"
      ),



      dashboardSidebar(
        sidebarMenu(
          sidebarMenu(
            menuItem("County Table", tabName="County-Table"),

            menuItem("Township", tabName="Township",
              menuSubItem("Table", tabName = "Table"),
              menuSubItem("Chart", tabName = "Chart")
          ),

            menuItem("Plotly Stuff", tabName = "Plotly-Stuff")
        )),

      tags$head(

        tags$style(HTML("
                        .sidebar{height: 90vh; overflow-y: auto; }
                        .dataTables_wrapper { overflow-x: scroll; }
                        .rChart {height: 500px, width: 100%}
                        "))
      )  

      ),

      dashboardBody(
      tabItems(
      tabItem(tabName =  "Table",

              tabBox(

              title = "Township Table",
              id= "TwpPopTable", height = "5000px", width = "1000px",
              tabPanel("Download Data", 
              fluidPage(
                              absolutePanel(draggable=F, top=125, left = 250, width = "40.2%",
                                            sidebarPanel(
                                              helpText("The township data is organized by county. To view a specific townshipâs population, first select the county it is located. You can compare multiple townships by holding down âCTRLâ while selecting your desired counties."),
                                              selectInput("County4", 
                                                          "Select a County:", 
                                                          c("All", 
                                                            unique(as.character(TwpPop$County))),
                                                          selected = "All",
                                                          multiple = TRUE
                                                          #                                                                               , selectize = FALSE
                                              ),
                                              helpText("To download the full dataset in .csv format, click the button below. Customized data can also be copied and pasted into an Excel spreadsheet with the formatting intact."),
                                              downloadButton('twpPopDownload', label = "Download Data"),
                                              width = 12)))),
              tabPanel("Table", 
                              mainPanel(dataTableOutput(outputId="TwpPopTable"),
                                        p("Source: U.S. Census Bureau, Decennial Censuses 1900-2010"))


               ))),


      tabItem((tabName = "Chart"),

                fluidRow(  
                  column(width=5,
                      box(   
                      showOutput("TwpPopChart", "nvd3"), status= "primary",
                      p("Source: U.S. Census Bureau, Decennial Censuses 1900-2010")
                      , widths = c(1, 10))), 

                  absolutePanel(draggable=T, top=200, left = 1000, width = "20%",
                                helpText("The township data is organized by county. To view a specific townshipâs population, first select the county it is located. You can compare multiple townships by holding down âCTRLâ while selecting your desired counties. Then select the communities you want to compare by clicking on the legend."),
                                selectInput("County5", 
                                            "Select a County:", 
                                            c(unique(as.character(TwpPopLong$County))),
                                            selected = "Aitkin",
                                            multiple = TRUE
                                            #                                                                               , selectize = FALSE
                                )))

      ),

      tabItem(
        (tabName = "County-Table"),

              h2("Ayyyyyy")

              ),



      tabItem(
        (tabName = "Plotly-Stuff"),

          fluidRow( 
          mainPanel(plotlyOutput("trendPlot", width="100%")),


          sliderInput("bins", "Numbner of bins:", min=1,max=50,value=10))
      )),

      #Below is for colors display of the 

      tags$head(tags$style(HTML('
                .skin-blue .main-header .logo{
                  font-family: Georgia, Times, "Times New Roman", serif;
                  font-weight: bold;
                  font-size: 24px;
                  color: #FFFF1C;
                }

                .skin-blue .main-header .logo{
                  background-color: #FF9900;
                }

                .skin-blue .main-header .navbar{
                  background-color: #FF9900;
                }

                .skin-blue .main-sidebar{
                  background-color: #FF9900;
                }

                .skin-blue .main-sidebar{
                  font-family: Georgia, Times, "Times New Roman", serif;
                  font-weight: bold;
                  font-size: 12px;
                  color:#FFFF1C;
                }

                .skin-blue .main-sidebar .sidebar .sidebar-menu .active a{
                  color: #FFFF1C;
                }

                .skin-blue .main-header .logo:hover{
                  background-color: #FF9900;
                }

                ')


      ))

))

以下是我的服务器代码:

library(ggplot2)
  library(plyr)
  library(rCharts)
  library(shiny)
  library(xtable)
  library(RColorBrewer)
  library(shinythemes)
  library(shinydashboard)
  library(dplyr)
  library(plotly)
  PopData <- read.csv("CountyPopLong.csv", header=T)
  ChangeData <- read.csv("CountyChangeLong.csv", header=T)
  CountyPop <- read.csv("CountyPopWide.csv", header=T)
  CountyChange <- read.csv("CountyChangeWide.csv", header=T)
  CntyInfo <- read.csv("CntyCensusInfo.csv", header=T)
  CityPop <- read.csv("CityData.csv", header=T)
  CityPopLong <- read.csv("CityPop.csv", header=T)
  CityChange <- read.csv("CityChangeWide.csv", header=T)
  CityChangeLong <- read.csv("CityChangeLong.csv", header=T)
  CityInfo <- read.csv("CityCensusInfo.csv", header=T)
  TwpInfo <- read.csv("TwpCensusInfo.csv", header=T)
  TwpPop <- read.csv("TownshipPopWide.csv", header=T)
  TwpPopLong <- read.csv("TownshipPopLongWithCounty.csv", header=T)
  TwpChange <- read.csv("TwpChangeWide.csv", header=T)
  TwpChangeLong <- read.csv("TwpChangeLong.csv", header=T)
  MHIdata <- read.csv("CountyMHILong.csv", header=T)
  PCIdata <- read.csv("CountyPCILong.csv", header=T)
  CityACS <- read.csv("CityACSLong.csv", header=T)
  TwpACS <- read.csv("TwpACSLong.csv", header=T)
  CountyBGLong <- read.csv("CountyBG2000to2010long.csv", header=T)
  CityBGLong <- read.csv("CityBG2000to2010long.csv", header=T)
  TwpBGLong <- read.csv("TwpBrainGain2000to2010long.csv", header=T)
  CountyBG90Long <- read.csv("CountyBG1990to2000long.csv", header=T)
  CityBG90Long <- read.csv("CityBG1990to2000long.csv", header=T)
  TwpBG90Long <- read.csv("TwpBrainGain1990to2000long.csv", header=T)
  options(RCHART_WIDTH=800, RCHART_HEIGHT=600)


  function(input, output) {

    output$table <- renderDataTable(iris)

    set.seed(122)
    histdata <- rnorm(500)

    ######################## POPULATION OUTPUTS ########################
    output$PopTable <- renderDataTable({
      data <- CountyPop
      if (input$County != "All"){
        data <- data[data$County %in% input$County,]
      }
      data
    }, options =list(aoColumnDefs = list(list(sClass="alignCenter",aTargets=c(list("_all")) )),  pageLength=10))

    output$PopChart <- renderChart({
      names(PopData) = gsub("\.", "", names(PopData))
      n1 <- nPlot(Population ~ Year, data = PopData, group = "County", type = 'lineChart')
      n1$addParams(dom = 'PopChart')
      n1$yAxis(axisLabel = "Population", width = 62)      
      n1$xAxis(axisLabel = "Year")
      n1$chart(forceY = c(0, 1))
      n1$xAxis(tickValues=c(1900, 1910, 1920, 1930, 1940, 1950, 1960, 1970, 1980, 1990, 2000, 2010))
      return(n1)
    })

    output$countyPopDownload <- downloadHandler(
      filename = function() { paste('MNCountyPopData', '.csv', sep='') },
      content = function(file) {
        write.csv(PopData, file)
      }) 

    output$CityPopTable <- renderDataTable({
      data <- CityPop
      if (input$County2 != "All"){
        data <- data[data$County %in% input$County2,]
      }
      data
    }, options =list(aoColumnDefs = list(list(sClass="alignCenter",aTargets=c(list("_all")) )),  pageLength=10))

    output$CityPopChart <- renderChart({
      var <- reactive({input$County3})
      DF <- subset(CityPopLong, County %in% var())
      names(DF) = gsub("\.", "", names(DF))
      n2 <- nPlot(Population ~ Year, data = DF, group = "Name", type = 'lineChart')
      n2$addParams(dom = 'CityPopChart')
      n2$yAxis(axisLabel = "Population", width = 62)      
      n2$xAxis(axisLabel = "Year")
      n2$xAxis(tickValues=c(1900, 1910, 1920, 1930, 1940, 1950, 1960, 1970, 1980, 1990, 2000, 2010))
      n2$chart(forceY = c(0, 1))
      return(n2)
    })

    output$cityPopDownload <- downloadHandler(
      filename = function() { paste('MNCityPopData', '.csv', sep='') },
      content = function(file) {
        write.csv(CityPop, file)
      }) 

    output$TwpPopTable <- renderDataTable({
      data <- TwpPop
      if (input$County4 != "All"){
        data <- data[data$County %in% input$County4,]
      }
      data
    }, options =list(aoColumnDefs = list(list( sClass="alignCenter",aTargets=c(list("_all"))  )),  pageLength=10))


    renderChart_pct <- function(expr, env = parent.frame(), quoted = FALSE) {
      func <- shiny::exprToFunction(expr, env, quoted)
      function() {
        rChart_ <- func()
        cht_style <- sprintf("<style>.rChart {width: %s; height: %s} </style>",
                             #### change these here to desired %
                             "100%", "100%")
        cht <- paste(capture.output(rChart_$print()), collapse = '
')
        HTML(paste(c(cht_style, cht), collapse = '
'))
      }
    }

    output$TwpPopChart <- renderChart({
      var <- reactive({input$County5})
      DF <- subset(TwpPopLong, County %in% var())
      names(DF) = sub("\.", "", names(DF))
      n2 <- nPlot(Population ~ Year, data = DF, group = "Name", type = 'lineChart')
      n2$addParams(dom = 'TwpPopChart')
      n2$yAxis(axisLabel = "Population", width = 62)      
      n2$xAxis(axisLabel = "Year")
      n2$xAxis(tickValues=c(1900, 1910, 1920, 1930, 1940, 1950, 1960, 1970, 1980, 1990, 2000, 2010))
      n2$chart(forceY = c(0, 1))
      n2$chart(height=500)
      n2$set(width=500)
      return(n2)
    })

    output$twpPopDownload <- downloadHandler(
      filename = function() { paste('MNTownshipPopData', '.csv', sep='') },
      content = function(file) {
        write.csv(TwpPop, file)
      })

    ######################## POPULATION CHANGE OUTPUTS ########################

    output$ChangeTable <- renderDataTable({
      data <- CountyChange
      if (input$County6 != "All"){
        data <- data[data$County %in% input$County6,]
      }
      data
    }, options =list(aoColumnDefs = list(list(sClass="alignCenter",aTargets=c(list("_all"))  )),  pageLength=10))  

    output$ChangeChart <- renderChart({
      names(ChangeData) = gsub("\.", "", names(ChangeData))
      n3 <- nPlot(PercentChange ~ Year, data = ChangeData, group = "County", type = 'lineChart')
      n3$addParams(dom = 'ChangeChart')
      #     n3$yAxis(tickValues=function(d) {return(d + "%")})
      ##    ^infinite recursion
      #     n3$yAxis(tickFormat="#!function(d) {return d3.format('%Y'));}!#" )
      ##    ^all axis values gone, chart turns static
      #     n3$yAxis(labelType='percent')
      ##     ^ only for pie charts
      #     n3$yAxis(tickFormat=function(d) { return(parseInt(d, 10) + "%")})
      ##     ^ "could not find function 'd3.format'"
      n3$yAxis(axisLabel = "Percent Change from Previous Decade", width = 62)      
      n3$xAxis(axisLabel = "Year")
      n3$xAxis(tickValues=c(1900, 1910, 1920, 1930, 1940, 1950, 1960, 1970, 1980, 1990, 2000, 2010))
      return(n3)
    })

    output$countyChangeDownload <- downloadHandler(
      filename = function() { paste('MNCountyPopChangeData', '.csv', sep='') },
      content = function(file) {
        write.csv(ChangeData, file)
      }) 

    output$cityChangeTable <- renderDataTable({
      data <- CityChange
      if (input$County7 != "All"){
        data <- data[data$County %in% input$County7,]
      }
      data
    }, options =list(aoColumnDefs = list(list(sClass="alignCenter",aTargets=c(list("_all"))  )),  pageLength=10))  

    output$cityChangeChart <- renderChart({
      var <- reactive({input$County8})
      DF <- subset(CityChangeLong, County %in% var())
      names(DF) = gsub("\.", "", names(DF))
      n4 <- nPlot(PercentChange ~ Year, data = DF, group = "Name", type = 'lineChart')
      n4$addParams(dom = 'cityChangeChart')
      n4$yAxis(axisLabel = "Percent Change from Previous Decade", width = 62)      
      n4$xAxis(axisLabel = "Year")
      n4$xAxis(tickValues=c(1900, 1910, 1920, 1930, 1940, 1950, 1960, 1970, 1980, 1990, 2000, 2010))
      #     n3$chart(forceY = c(-100, 100))
      return(n4)
    })

    output$cityChangeDownload <- downloadHandler(
      filename = function() { paste('MNCityPopChangeData', '.csv', sep='') },
      content = function(file) {
        write.csv(CityChange, file)
      })

    output$twpChangeTable <- renderDataTable({
      data <- TwpChange
      if (input$County9 != "All"){
        data <- data[data$County %in% input$County9,]
      }
      data
    }, options =list(aoColumnDefs = list(list(sClass="alignCenter",aTargets=c(list("_all"))  )), pageLength=10))  

    output$twpChangeChart <- renderChart({
      var <- reactive({input$County10})
      DF <- subset(TwpChangeLong, County %in% var())
      names(DF) = gsub("\.", "", names(DF))
      n5 <- nPlot(PercentChange ~ Year, data = DF, group = "Name", type = 'lineChart')
      n5$addParams(dom = 'twpChangeChart')
      n5$yAxis(axisLabel = "Percent Change from Previous Decade", width = 62)      
      n5$xAxis(axisLabel = "Year")
      n5$xAxis(tickValues=c(1900, 1910, 1920, 1930, 1940, 1950, 1960, 1970, 1980, 1990, 2000, 2010))
      #     n3$chart(forceY = c(-100, 100))
      return(n5)
    })

    output$twpChangeDownload <- downloadHandler(
      filename = function() { paste('MNTownshipPopChangeData', '.csv', sep='') },
      content = function(file) {
        write.csv(TwpChange, file)
      })


    data(movies, package = "ggplot2")
    minx <- min(movies$rating)
    maxx <- max(movies$rating)

      output$trendPlot <- renderPlotly({
        # size of the bins depend on the input 'bins'
        size <- (maxx - minx) / input$bins

        # a simple histogram of movie ratings
        p <- plot_ly(movies, x = rating, autobinx = F, type = "histogram",
                     xbins = list(start = minx, end = maxx, size = size))
        # style the xaxis
        layout(p, xaxis = list(title = "Ratings", range = c(minx, maxx), autorange = F,
                               autotick = F, tick0 = minx, dtick = size))
      })




  }

目前有很多未使用的代码,因为我还没有完成UI。从本质上讲,我是从前面闪亮的代码中提取代码来组装一个shinydashboard。

推荐答案

这里有一个更通用的解决方案:

.plotly .modebar-btn svg {
  height: 1em!important;
  width: 1em!important;
}

这篇关于使用shinydashboard中的插图,按钮太大而看不到绘图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆