当我尝试引入动态selectInput字段时,我的Shiny R中的gvisBubbleChart Plot停止显示

时间:2017-05-25 20:29:09

标签: r shiny googlevis

我在开发应用程序时遇到过这个问题,并使用Fruits df在简化的脚本中将其复制。 基本上,我有selectInput框来选择Year,这是Fruits中的一列。我创建了唯一的年份列表,并将其提供给selectInput框。 然后,理想情况下,我希望我的情节只显示我选择的年份的记录。但是,正如你在我的代码中看到的那样 - 第二个你取消注释一个3行的块来完成它, - 即使似乎没有任何错误,绘图也会停止显示。谁知道为什么会这样?在此先感谢!!!

相关问题 - 在调试时我看到输入$ explore_year起初是“Null”。我试图在代码中处理这个问题,但不确定为什么selected =“2010”不会自动处理它。

    library(shiny)
    library(googleVis)
    library(DT)
    listOfFruits <- sort(unique(Fruits$Year), decreasing = FALSE)
    ui <- fluidPage(title = "Fruits Bug Recreated",
         fluidRow(
           column(3, 
                  wellPanel(      
                     uiOutput("choose_year"),
                    br()
                   )),
           column(9, 
                  tags$hr(),
                  htmlOutput("view")
                 )),
         fluidRow(DT::dataTableOutput("tableExplore"))
         )
  server <- function(input, output) {
  output$view <- renderGvis({

#Uncomment these 3 lines to see how the plot stops displaying.
# local_exloreYear <- input$explore_year
# if (is.null(local_exloreYear)) {local_exloreYear <- "2010"}
# FruitsSubset <- subset(Fruits, Year == local_exloreYear)
#------------I wanted to use the commented line below instead of the           
#that follows
#gvisBubbleChart(FruitsSubset, idvar="Fruit",
#-------------    
gvisBubbleChart(Fruits, idvar="Fruit",                 
                xvar="Sales", yvar="Expenses",
                colorvar="Year", sizevar="Profit",
                options=list(
                  hAxis='{minValue:70, maxValue:125, title:"Sales"}',sortBubblesBySize=TRUE,
 vAxis='{title: "Expenses",minValue:60, maxValue:95}' 
 ))
 })
# Drop-down selection box for dynamic choice of minutes in the plans to compare
output$choose_year <- renderUI({
selectInput("explore_year", "Select Year", as.list(listOfFruits),selected ="2010")
  })

output$tableExplore <- DT::renderDataTable(DT::datatable({
FruitsSubset <- subset(Fruits, Fruits$Year == input$explore_year)
myTable <-FruitsSubset[,c(1,2,3,4,5,6)]
data <- myTable
data
},options = list(searching = FALSE,paging = FALSE) 
))
}

shinyApp(ui = ui, server = server)

1 个答案:

答案 0 :(得分:1)

就像我在评论中写的那样,您可以通过使输入条件非输入条件来解决它。

output$view <- renderGvis({
  if(!is.null(input$explore_year)){
    ...
  }
})

尽管如此,我认为你不得不这样做,因为在其他渲染函数中它并不是必需的,例如在DT::renderDataTable()中,您也使用相同的输入(最初为NULL)。 因此,我建议将其报告为错误。