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

在R的ggplot中绘制双变量时序图时仅移除单个变量的NA值

解决ggplot绘制含NA变量的时间序列图问题

你的代码存在两个核心问题:

  • 管道中调用了还未生成的对象cov_vs_no_scent_share_plot,这会直接导致行不匹配报错;
  • 过滤逻辑错误,没有区分两个变量的保留规则(new_cases需全保留,no_scent_share仅保留非NA值)。

正确实现代码

推荐使用tidyr::pivot_longer(比gather更直观的现代函数)转成长格式,再针对性过滤:

library(tidyverse)

cov_vs_no_scent_share_plot <- cov_vs_no_scent_share %>%
  pivot_longer(cols = c(new_cases, no_scent_share), 
               names_to = "key", values_to = "value") %>%
  # 保留new_cases的所有行,仅过滤no_scent_share的NA值
  filter(key == "new_cases" | !is.na(value)) %>%
  ggplot(aes(x = Date, y = value, colour = key)) +
  geom_line() +  # 必须添加线图层,否则仅生成绘图对象不会显示图
  labs(x = "日期", y = "数值", colour = "变量")  # 自定义坐标轴和图例标签

代码说明

  1. pivot_longer将宽格式数据转为长格式,每行对应一个日期+变量的组合;
  2. filter条件确保:
    • 所有new_cases的记录都保留,不管对应日期的no_scent_share是否为NA;
    • 仅保留no_scent_share中非NA的记录,避免NA值在图上出现异常线条;
  3. 原代码仅定义了绘图映射,必须添加geom_line()等图层才能生成可视化图表。

内容的提问来源于stack exchange,提问作者Michael Volkmann

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 16:05:20