Plotting a list of timeseries of class(forecast) in [R]

拥有回忆 提交于 2021-02-16 13:47:20

问题


I am trying to plot a faceted grid of timeseries plots (ideally 3X3) using a list of forecast timeseries data. The data is nested within a list and is of class forecast::forecast.

 > class(forecasts)
[1] "list"
> class(forecasts$`1_1`)
[1] "forecast"
> head(forecasts, 2)
$`1_1`
         Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
Dec 2016       7.370299 7.335176 7.405422 7.316583 7.424015

$`1_10`
         Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
Dec 2016       7.396656 7.359845 7.433467 7.340359 7.452953

I would like to plot the data, so far i've tried this:

> map2(forecasts, names(forecasts), 
+      function(forecast, time_series) plot(forecast, 
+                                       main= "Blank", 
+                                       bty="n",
+                                       ylab="Monthly Revenue",
+                                       xlab="Time"))

And it returns this:

I can't seem to figure out how to add the corresponding list label names so i've put a character string "Blank" in there as a placeholder.

If anyone has any solution for plotting lists of forecast format time series data I would greatly appreciate it.

    > names(forecasts)
 [1] "1_1"   "1_10"  "1_2"   "1_3"   "1_4"   "1_5"   "1_6"   "1_7"   "1_8"   "1_9"   "10_1" 
[12] "10_10" "10_2"  "10_3"  "10_4"  "10_5"  "10_7"  "10_8"  "10_9"  "2_1"   "2_10"  "2_2"  
[23] "2_3"   "2_4"   "2_5"   "2_6"   "2_7"   "2_8"   "2_9"   "3_1"   "3_10"  "3_2"   "3_3"  
[34] "3_4"   "3_5"   "3_6"   "3_7"   "3_8"   "3_9"   "4_1"   "4_10"  "4_2"   "4_3"   "4_4"  
[45] "4_5"   "4_6"   "4_7"   "4_8"   "4_9"   "5_1"   "5_10"  "5_2"   "5_3"   "5_4"   "5_5"  
[56] "5_6"   "5_7"   "5_8"   "5_9"   "6_1"   "7_1"   "7_10"  "7_2"   "7_3"   "7_4"   "7_5"  
[67] "7_6"   "7_7"   "7_8"   "7_9"   "8_1"   "8_10"  "8_2"   "8_3"   "8_4"   "8_5"   "8_6"  
[78] "8_7"   "8_8"   "8_9"   "9_1"   "9_10"  "9_2"   "9_3"   "9_4"   "9_5"   "9_6"   "9_7"  
[89] "9_9" 

回答1:


You can use one of these

par(mfrow = c(3, 3))

map2(forecasts, names(forecasts), 
      ~ plot(       .x, 
             main = .y, 
             bty  = "n",
             ylab = "Monthly Revenue",
             xlab = "Time"))

# same as map2 but returns nothing
# suitable for plotting & writing output to files
walk2(forecasts, names(forecasts), 
      ~ plot(       .x, 
             main = .y, 
             bty  = "n",
             ylab = "Monthly Revenue",
             xlab = "Time"))

pwalk(list(forecasts, names(forecasts)), 
      ~ plot(       ..1, 
             main = ..2, 
             bty  = "n",
             ylab = "GDP",
             xlab = "Year"))

# to save some typing
iwalk(forecasts, 
      ~ plot(       .x, 
             main = .y, 
             bty  = "n",
             ylab = "Monthly Revenue",
             xlab = "Time"))

P.S: time_series in your function is not needed as you're not using it in the subsequent plot call



来源:https://stackoverflow.com/questions/50437269/plotting-a-list-of-timeseries-of-classforecast-in-r

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!