我正在使用R Shiny中的Plot_ly包绘制图形。现在我正在创建一个上面有许多线的图形,我想知道用户是否可以使用复选框输入来打开和关闭这些线。
下面是我的服务器端代码示例:
output$site_filter <- renderUI({
selectInput("site_filter", "Sites"
sort(unique(site_list$sites), decreasing = FALSE))
})
output$plots <- renderPlotly({
forecast_detail <- forecast[forecast$site == input$site_filter,]
actual_detail <- actual[actual$site == input$site_filter,]
p <- plot_ly() %>%
add_lines(x = forecast_detail$date, y = forecast_detail$total,
name = 'Forecast', line = list(color = 'purple')) %>%
add_lines(x = actual_detail$date, y = actual_detail$total,
name = 'Actual', line = list(color = 'blue'))
})
对于我的UI端,我创建了如下复选框:
fluidRow(checkboxInput("Actuals", "Actual Line", value = TRUE))
有没有一种方法可以使用此复选框输入来打开和关闭实际行?我一直试图在add_lines命令之前使用if语句,但我得到了一个错误,指出这不符合逻辑。
发布于 2018-07-31 05:15:48
您可以存储第一组行,并根据复选框触发的条件添加第二组行。如果没有一个可重复的例子,很难想出一个可行的解决方案,但像这样的东西应该可以完成工作:
output$plots <- renderPlotly({
forecast_detail <- forecast[forecast$site == input$site_filter,]
actual_detail <- actual[actual$site == input$site_filter,]
p <- plot_ly() %>%
add_lines(
x = forecast_detail$date,
y = forecast_detail$total,
name = 'Forecast',
line = list(color = 'purple')
)
if(!is.null(input$Actuals)) {
p <- p %>%
add_lines(
x = actual_detail$date,
y = actual_detail$total,
name = 'Actual',
line = list(color = 'blue')
)
}
return(p)
})
https://stackoverflow.com/questions/51600374
复制相似问题