在 R 中绘制预测的自定义轴标签

2023-12-29

我正在尝试在预测上添加一些合理的标签。

这是我的代码:

library("forecast")

t <- ts(
  c(
    4410.0, 6435.0, 
    4939.0, 6487.0, 25521.0, 18764.0, 
    12223.0, 18590.0, 36898.0, 28826.0, 
    20329.0
    )  
  , frequency = 4
  , start=c(2011, 7, 1)
)

cast <- meanf(t,h=4)

par(mfrow=c(1,1),xaxt="n")
plot(cast)

ticks <- seq(as.POSIXct("2011-07-01"), by = "3 month", length.out=length(cast) + 4) 
axis.Date(1, at = ticks, labels = ticks, format="%Y-%m")

没有错误或警告...但没有轴添加到图中:(

如果我使用xaxt="s"然后我确实得到了轴标签,但它们不是像 2014.0 这样的东西(即根本没有格式化为日期)。理想情况下,我实际上想要一些更具可读性的内容,例如“2014 年第三季度”,但我会选择 2014-07(该季度的第一个月)。

知道我做错了什么吗?我在互联网上搜索到的所有内容都建议禁用默认轴,然后使用 axis 或 axis.Date 函数添加自定义...但我无法使用这些方法中的任何一种获得任何类型的轴:(


我不会说有错误,而是说功能有forecast::plot.forecast不适合与以下设备一起使用axis.Date or axis.POSIXct(包中未使用forecast).

调用函数之前axis.Date and axis.POSIXct,时间点必须明确传递给plot作为一个序列Date or POSIXct对象。如果我们将时间序列绘制为plot(t)那么 x 轴似乎没有被正确定义为供上述函数使用。

请参阅下面的代码以及变量如何time创建并传递给plot. plot(time, x)被使用而不是仅仅plot(x)。因此函数axis将能够显示时间轴的标签。 (在这个例子中,置信区间看起来不像那些 显示者forecast::plot.forecast.)

library("forecast")
require(zoo)

t <- ts(
  c(
    4410.0, 6435.0, 
    4939.0, 6487.0, 25521.0, 18764.0, 
    12223.0, 18590.0, 36898.0, 28826.0, 
    20329.0
    )  
  , frequency = 4
  , start=c(2011, 7, 1)
)
cast <- meanf(t, h=4)

x <- ts(c(t, cast$mean), start = c(start(t), 1), frequency = frequency(t))
time <- as.yearqtr(seq(start(x)[1], end(x)[1] + 1, 1/frequency(x)))
time <- time[seq_along(x)]
time <- as.POSIXct(time)
plot(time, x, type = "n", xaxt = "n", ylim = range(c(cast$lower, cast$upper)))
lines(time[seq_along(t)], t)
lines(time[-seq_along(t)], cast$mean, col = "blue")
lines(time[-seq_along(t)], cast$upper[,2], col = "red")
lines(time[-seq_along(t)], cast$lower[,2], col = "red")
ticks <- seq(as.POSIXct("2011-07-01"), by = "3 month", length.out=length(cast) + 4) 
axis(side = 1, at = ticks, labels = ticks)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 R 中绘制预测的自定义轴标签 的相关文章

随机推荐