我正在使用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'))
})
对于我的用户界面,我创建了如下复选框:
fluidRow(checkboxInput("Actuals", "Actual Line", value = TRUE))
有没有一种方法可以使用此复选框输入来切换实际行的开和关?我一直在尝试在add_lines命令之前使用if语句,但收到一条错误消息,指出它不合逻辑。
答案 0 :(得分:1)
您可以存储第一组行,并根据复选框触发的条件添加第二组。没有可复制的示例,很难找到一个可行的解决方案,但类似的事情应该可以完成:
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)
})