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

如何在Base R中垂直排列时间序列分解图(仿ggplot2布局)

将stR分解图改为垂直单列布局的方法

stR包的plot(components(fit))默认使用两列布局,要改成垂直单列,你可以手动控制绘图布局,或者提取组分后用ggplot2重构绘图,具体方法如下:

方法一:用Base R手动控制布局

  1. 先提取分解后的组分对象:
comp <- components(fit)
  1. 设置5行1列的绘图布局(匹配mstl的5个分解组分),同时调整边距避免标签重叠:
par(mfrow = c(5, 1), mar = c(2, 4, 1, 1))
  1. 逐个绘制每个组分:
plot(comp[, 1], main = names(comp)[1], xlab = "", ylab = "")
plot(comp[, 2], main = names(comp)[2], xlab = "", ylab = "")
plot(comp[, 3], main = names(comp)[3], xlab = "", ylab = "")
plot(comp[, 4], main = names(comp)[4], xlab = "", ylab = "")
plot(comp[, 5], main = names(comp)[5], xlab = "", ylab = "")

如果你需要更灵活的布局控制,也可以用layout()替代par(mfrow):

layout(matrix(1:5, ncol = 1))
# 重复上面的5行plot代码即可

方法二:用ggplot2重构绘图(风格更贴近autoplot)

如果习惯ggplot2的可视化风格,可以把组分转换为数据框后绘制:

library(ggplot2)
library(tidyr)

# 将组分对象转为长格式数据框
comp_df <- as.data.frame(comp) %>%
  mutate(Date = time(comp)) %>%
  pivot_longer(-Date, names_to = "Component", values_to = "Value")

# 生成垂直单列的分解图
ggplot(comp_df, aes(x = Date, y = Value)) +
  geom_line() +
  facet_wrap(~Component, ncol = 1, scales = "free_y") +
  theme_minimal()

内容的提问来源于stack exchange,提问作者Saïd Maanan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 08:40:05