使用autoplot()绘制时间序列:消除曲线间隙与修改颜色求助
解决autoplot()绘制SARIMA预测时间序列的两个问题
我来帮你拆解并解决遇到的这两个问题:
1. 原始数据与预测值之间的曲线间隙
这个间隙问题出在include=24的用法上。autoplot.forecast()里的include参数是指定从时间序列的第N个观测值开始展示历史数据,而不是显示最后24个观测值。如果你的drivers序列总长度远大于24,那么include=24会让图表显示从第24个点到序列末尾的历史数据,但预测结果SARIMA.pred是衔接在整个原始序列的最后,这就导致了最后一段历史数据和预测值之间出现空白间隙。
解决办法很简单:
- 如果你想展示最后24个历史点并和预测值无缝衔接,先对原始序列做窗口截取,再用
autolayer()叠加预测曲线:
# 截取最后24个历史观测值 last24_drivers <- window(drivers, start = length(drivers) - 23) # 绘制历史数据 + 预测值 autoplot(last24_drivers, colour = "darkblue") + autolayer(SARIMA.pred, colour = "red")
- 如果你想展示全部历史数据,直接把
include设为序列总长度即可:autoplot(SARIMA.pred, include = length(drivers))。
2. 无法修改曲线颜色
你用的ts.colour并不是autoplot.forecast()的有效参数,这就是颜色设置无效的原因。要灵活控制历史数据和预测值的颜色,推荐用分层绘图的方式:
- 用
autoplot()绘制历史数据时,通过colour参数指定历史曲线颜色 - 用
autolayer()添加预测值图层,单独指定预测曲线的颜色
举个完整的例子,把历史数据设为深蓝色,预测曲线设为红色,还能自定义置信区间的填充色:
autoplot(drivers, colour = "darkblue") + autolayer(SARIMA.pred, colour = "red", fill = "lightpink", alpha = 0.3) # 降低置信区间的透明度,避免遮挡曲线
要是你习惯直接用autoplot(SARIMA.pred)的写法,也可以用ggplot2的颜色比例尺来修改:
autoplot(SARIMA.pred, include = length(drivers)) + scale_colour_manual(values = c("darkblue", "red")) + # 第一个值对应历史曲线,第二个对应预测曲线 scale_fill_manual(values = "lightpink")
内容的提问来源于stack exchange,提问作者mobupu
相关产品推荐
相关产品推荐

