在R中结合ggsubseriesplot()与箱线图进行时间序列分析的方法
在R语言中结合箱线图与ggsubseriesplot做时间序列分析
ggsubseriesplot() 是forecast包中用于可视化时间序列季节子序列的工具,默认展示每个季节周期内的观测点趋势,我们可以通过两种方式结合箱线图,强化季节分布特征的展示:
方法1:直接修改ggsubseriesplot的geom参数
ggsubseriesplot() 支持通过geom参数指定绘图类型,你可以直接设置为"boxplot"仅展示箱线图,或者设置为c("line", "boxplot")同时展示趋势线和箱线图,直观对比每个季节子组的分布与趋势:
library(forecast) library(ggplot2) # 仅展示箱线图 ggsubseriesplot(AirPassengers, geom = "boxplot") + labs(title = "月度航空乘客数季节子序列箱线图", x = "月份", y = "乘客数") # 同时展示折线趋势与箱线图 ggsubseriesplot(AirPassengers, geom = c("line", "boxplot")) + labs(title = "月度航空乘客数趋势与箱线图", x = "月份", y = "乘客数")
箱线图能清晰呈现每个月份乘客数的中位数、四分位距和异常值,折线则保留了年份维度的趋势变化,二者结合可同时捕捉季节分布规律和长期趋势。
方法2:手动用ggplot2构建组合图
如果需要更灵活的自定义(比如调整箱线颜色、折线样式),可以先提取时间序列的季节子序列数据,再用ggplot2手动叠加箱线图和趋势元素:
library(forecast) library(ggplot2) library(tidyr) # 提取季节子序列数据并转换为长格式数据框 subseries_data <- as.data.frame(subseries(AirPassengers)) subseries_data$Year <- as.integer(rownames(subseries_data)) subseries_long <- pivot_longer(subseries_data, cols = -Year, names_to = "Month", values_to = "Passengers") # 绘制自定义组合图 ggplot(subseries_long, aes(x = Month, y = Passengers)) + geom_boxplot(fill = "#4292c6", alpha = 0.7) + # 添加箱线图 geom_line(aes(group = Year, color = factor(Year)), alpha = 0.5) + # 添加年度趋势线 labs(title = "月度航空乘客数季节分布与年度趋势", x = "月份", y = "乘客数", color = "年份") + theme_minimal()
这种方式可以完全自定义图形元素,比如箱线的填充色、折线的透明度和颜色分组,适配个性化的可视化需求。
内容的提问来源于stack exchange,提问作者Masud Tarek
相关产品推荐
相关产品推荐

