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

在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 03:12:07