我正在尝试使用闪亮的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)
答案 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()
})