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

在R中基于同一数据框绘制不同时长折线图并设置X轴

在同一折线图中绘制不同时长的相对周期折线

步骤1:加载依赖包

需要用到dplyr做数据清洗,ggplot2实现可视化,purrr批量处理时间段:

library(dplyr)
library(ggplot2)
library(purrr)

步骤2:定义目标时间段

先明确你要对比的时间段,比如你提到的1980-1989、1995-2001,可按需扩展:

time_periods <- list(
  list(group = "1980-1989", start = 1980, end = 1989),
  list(group = "1995-2001", start = 1995, end = 2001),
  list(group = "2015-2021", start = 2015, end = 2021) # 示例额外分组
)

步骤3:处理数据生成相对周期列

遍历每个时间段,筛选对应年份的数据,同时为每个组生成从1开始的相对周期数:

processed_data <- map_dfr(time_periods, function(period) {
  malineGDP %>%
    filter(Year >= period$start, Year <= period$end) %>%
    mutate(
      group = period$group,
      period = row_number() # 把组内第1年设为1,依次递增
    )
})

步骤4:绘制统一轴的折线图

以相对周期为X轴,GDP增长率为Y轴,按时间段分组绘制折线,同时锁定X轴范围为1到最长折线的周期数:

max_period <- max(processed_data$period)

ggplot(processed_data, aes(x = period, y = value, color = group)) +
  geom_line(linewidth = 1) +
  geom_point(size = 2) + # 可选,添加数据点提升可读性
  scale_x_continuous(limits = c(1, max_period), breaks = 1:max_period) +
  labs(
    x = "相对周期",
    y = "GDP增长率",
    title = "不同时间段GDP增长率的相对周期对比",
    color = "时间段"
  ) +
  theme_minimal()

关键说明

  • row_number():将不同年份的绝对时间转换为组内的相对周期,实现不同时长折线在同一X轴对齐
  • scale_x_continuous(limits):强制X轴覆盖最长折线的周期范围,避免短折线截断X轴
  • 可根据需求调整线条粗细、点大小、主题样式等参数优化图表效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 21:01:11