在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
相关产品推荐
相关产品推荐

