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

时间:2014-07-09 15:46:57

标签: r time-series data-visualization

我试图在预测中获得一些合理的标签。

这是我的代码:

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这样的东西(即根本没有格式化为日期)。理想情况下,我实际上喜欢更具可读性的东西,例如&#34; 2014年第3季度&#34;但我会在2014-07(本季度的第一个月)结算。

知道我做错了什么吗?我在互联网上找到的所有内容都建议禁用默认轴,然后使用轴或轴。日期功能可以添加自定义...但我无法使用任何类型的轴这些方法中的任何一种:(

1 个答案:

答案 0 :(得分:1)

我不会说有错误,而是forecast::plot.forecast函数不适用于axis.Dateaxis.POSIXctforecast未使用的axis.Date })。

在调用函数axis.POSIXctplot之前,必须将时间点作为一系列DatePOSIXct对象显式传递给plot(t)。如果我们将时间序列绘制为time,那么x轴似乎没有被正确定义为由上述函数使用。

请参阅下面的代码以及如何创建变量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) 显示。)

{{1}}