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

R中绘制不同日期时间序列:ggplot未生成重叠曲线问题

解决双日期序列重叠绘图问题

问题根源

  1. 原始日期列是字符类型,ggplot将其当作离散类别处理,无法形成连续时间轴
  2. RR和FSScm1的有效观测分布在不同日期,NA值导致线条断裂,无法呈现连续重叠效果
  3. 数据仅包含少数日期,未覆盖1997-2007的完整时间范围

解决方案代码

library(ggplot2)
library(dplyr)
library(tidyr)

# 原始数据集
merged_suprises <- data.frame(
  date = c("1997-10-01", "1997-10-09", "1997-11-06","1997-11-12","1997-12-04","1998-01-01"),
  RR = c(0,NA,NA,NA,NA,0.22),
  FSScm1 = c(NA, 0.030, 0.15,-0.04, -0.03,NA),
  SON3c1 = c(NA,NA,NA,NA,NA,NA)
)

# 数据预处理
processed_data <- merged_suprises %>%
  # 将字符日期转为Date类型
  mutate(date = as.Date(date)) %>%
  # 生成1997-2007年的月度完整时间序列(按每月第一天)
  right_join(tibble(date = seq.Date(as.Date("1997-01-01"), as.Date("2007-12-31"), by = "month")), by = "date") %>%
  # 移除无用的SON3c1列,转为长格式
  select(-SON3c1) %>%
  pivot_longer(cols = c(RR, FSScm1), names_to = "series", values_to = "value") %>%
  # 按序列分组做线性插值,补全缺失值以形成连续线条
  group_by(series) %>%
  mutate(value = approx(date, value, date, rule = 2)$y) %>%
  ungroup()

# 重新计算双Y轴缩放因子
scale_factor <- max(processed_data$value[processed_data$series == "RR"], na.rm = TRUE) / 
  max(processed_data$value[processed_data$series == "FSScm1"], na.rm = TRUE)

# 绘制重叠时间序列
ggplot(processed_data, aes(x = date, y = value, color = series)) +
  geom_line(linewidth = 1) +
  scale_y_continuous(
    name = "Romer Romer Shock (blue)",
    sec.axis = sec_axis(~ . / scale_factor, name = "HFI Shock (red)")
  ) +
  scale_color_manual(values = c("RR" = "blue", "FSScm1" = "red")) +
  theme_minimal() +
  labs(x = "Date", title = "Monetary Policy Shock Series") +
  theme(
    axis.title.y.left = element_text(color = "blue"),
    axis.title.y.right = element_text(color = "red"),
    legend.position = "top",
    plot.title = element_text(hjust = 0.5)
  )

关键调整说明

  • 日期类型转换:将字符型日期转为Date,让ggplot识别为连续时间轴,而非离散类别
  • 时间范围扩展:生成1997-2007年完整月度日期序列,确保两组数据在同一时间轴上对齐
  • 缺失值插值:用approx做线性插值补全NA值,让线条连续,实现预期的重叠效果;若不需要插值,可替换为geom_point展示所有观测点
  • 长格式重构:将宽格式数据转为长格式,简化绘图代码逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 11:22:05