在R中使用ggplot2绘制分区域分季度回归系数时序图
R语言ggplot2实现分区域系数时间序列子图绘制
依赖包准备
需要用到以下工具包,提前安装加载即可:
library(plyr) library(dplyr) library(ggplot2)
系数提取与数据整理
你提供的res列表中每个元素对应1个季度的回归结果,我们先遍历所有季度提取非截距项系数,整理为ggplot2适配的长表结构:
coef_df <- lapply(seq_along(res), function(quarter_idx) { # 提取单个季度的所有区域(示例中为物种)回归结果 quarter_res <- res[[quarter_idx]] # 提取非截距项系数,示例中自变量为Sepal.Width,实际使用替换为你的自变量名即可 area_coef <- sapply(quarter_res, function(lm_mod) { coef(lm_mod)[["Sepal.Width"]] }) # 结构化输出 data.frame( quarter = quarter_idx, area = names(area_coef), coef_value = area_coef ) }) %>% bind_rows()
提示:14个季度的场景下代码无需修改,seq_along会自动生成1-14的X轴季度编号。
分面子图绘制
使用ggplot2的分面功能,每个区域对应独立子图:
ggplot(coef_df, aes(x = factor(quarter), y = coef_value, group = 1)) + # 点+折线展示时间趋势,样式可按需调整 geom_line(color = "#165DFF", linewidth = 1) + geom_point(color = "#FF7D00", size = 2.5) + # 按区域分面,scales = "free_y"可开启子图独立Y轴范围适配 facet_wrap(~area, nrow = 2, scales = "free_y") + labs( x = "季度", y = "非截距项回归系数" ) + theme_bw()
- 调整
facet_wrap的nrow/ncol参数可以修改子图的行列排布 - 若不需要独立Y轴,删除
scales = "free_y"参数即可 - 折线、点的颜色、大小都可以按需自定义修改
内容的提问来源于stack exchange,提问作者Lelleo
相关产品推荐
相关产品推荐

