闪亮的sliderInput跳过星期几

时间:2017-06-30 14:57:22

标签: r shiny

我正在尝试使用闪亮的sliderInput创建一个按日期设置动画的散点图。但是我没有一周中每天的数据,而那些日子的情节只是一个空的灰色框。有没有办法让我的sliderinput跳过一周中的某几天,以便我没有显示我没有数据的天数的空白图?我已经列举了一个例子。

   library(shiny)
   library(lubridate)

airqual <- airquality %>%
  mutate(date = as.Date(paste(airquality$Month, airquality$Day, 
      sep = "-"), format = "%m-%d")) %>%
   filter(wday(date) %in% c(1, 3, 4, 5, 6, 7))

   animationOptions(loop = TRUE)
ui <- fluidPage(

 # Sidebar with a slider input for number of bins 
 sidebarLayout(
   sidebarPanel(
     sliderInput("date",
              "The date",
              min = min(airqual$date),
              value = min(airqual$date),
              max = max(airqual$date),
              animate = TRUE
  )),

# Show a plot of the generated distribution
mainPanel(
  plotOutput("distPlot")
)
  )
)

 server <- function(input, output) {

output$distPlot <- renderPlot({
# generate bins based on input$bins from ui.R
airqual %>%
  filter(date == input$date) %>%
  ggplot(aes(x = Ozone, y = Solar.R)) +
  geom_point()
 })
}

# Run the application 
 shinyApp(ui = ui, server = server)

1 个答案:

答案 0 :(得分:0)

根据您的需要更新数据:

  data <- eventReactive(input$date, {
    x <- airqual %>%
      filter(date == input$date)
    if(nrow(x) == 0) {
      print(input$date)
      updateSliderInput(session, inputId = "date", value = input$date+1)
      NULL
    } else { x }
  })
  output$distPlot <- renderPlot({
    # generate bins based on input$bins from ui.R
    req(data()) %>%
      ggplot(aes(x = Ozone, y = Solar.R)) +
      geom_point()
  })
相关问题