You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shiny Plotly应用过滤器后无法主动渲染时间序列折线图问题求助

问题根源

你的代码主要存在4个核心错误:

  • reactive响应式对象不需要挂载到output上,直接定义为普通变量即可,你写的output$df2 <- reactive(...)会导致后续调用df2()找不到对象
  • 复选框input$covid返回的是布尔值TRUE/FALSE,不是字符串"Covid",你的判断条件完全写错了
  • 响应式数据df2没有写else分支,不勾选排除新冠周期时会返回空值
  • 下拉框默认选中为"Select",此时没有有效变量传入绘图逻辑,会触发报错

修正后完整代码

请确认flexdashboard头部配置了runtime: shiny,完整可运行代码如下:

---
title: "时间序列可视化"
output: flexdashboard::flex_dashboard
runtime: shiny
---

```{r setup, include=FALSE}
library(tidyverse)
library(plotly)
library(flexdashboard)
library(shiny)

# 构造示例数据
df <- data.frame(Date = rev(seq(as.Date("2020-01-01"),
                                as.Date("2021-08-15"),"day")),
                 Var1 = sample(10:100, 593, replace = TRUE), 
                 Var2 = sample(10:100, 593, replace = TRUE), 
                 Var3 = sample(10:100, 593, replace = TRUE), 
                 Var4 = sample(10:100, 593, replace = TRUE)
)

df$CovidPeriod <- ifelse((df$Date>=as.Date("2020-03-01", format="%Y-%m-%d") & 
                            df$Date<=as.Date("2020-09-30", format="%Y-%m-%d")), 
                          "Covid", "NonCovid")

可视化面板

控件区域

selectInput("Series1", label = "选择展示变量:", 
            choices = c("Var1", "Var2", "Var3", "Var4"), 
            selected = "Var1")
 
checkboxInput("covid", "排除2020年3-9月新冠疫情周期数据?", value = FALSE)

折线图区域

# 定义响应式数据集
df2 <- reactive({
  if(input$covid){ 
    filter(df, CovidPeriod == "NonCovid")
  } else {
    df
  }
})

renderPlotly({
  target_var <- input$Series1
  plot_ly(df2(), x = ~Date, y = ~.data[[target_var]], type='scatter', mode = 'lines', name = '实际值',
          line=list(color='rgb(56, 98, 249)', width=4)) %>%
      layout(title = paste0(target_var, "时间序列趋势"),
             xaxis = list(title = "日期"),
             yaxis = list(title = target_var)
             )
})
---

### 修改说明
- 去掉了下拉框里无效的`"Select"`选项,默认选中Var1,避免无有效变量的报错
- 修正了响应式数据集的定义方式,不需要挂载到output,同时补充了else分支返回全量数据
- 修正了复选框的判断逻辑,直接判断`input$covid`的布尔值即可
- 绘图时用`.data[[target_var]]`的标准写法调用动态变量,避免公式语法报错
- 动态修改了图表标题和Y轴标题,和选中的变量自动匹配

内容的提问来源于stack exchange,提问作者LeMarque
相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 00:45:04