简体   繁体   中英

How to change the y-axis scale in plot for a forecast object?

I have the following graph made with plot . I basically plotted the outcome of an model. The problem, as you can see, is the y-axis. I want to rescale it so that it shows values as integers and not in scientific notation. I already tried with ylim = c(a,b) but it didn't work.

This is the data to plot:

structure(list(method = "ARIMA(1,2,0)", model = structure(list(
coef = c(ar1 = 0.165440211592995), sigma2 = 314372.871343033, 
var.coef = structure(0.0387588365491072, .Dim = c(1L, 1L), .Dimnames = list(
    "ar1", "ar1")), mask = TRUE, loglik = -201.464633423226, 
aic = 406.929266846451, arma = c(1L, 0L, 0L, 0L, 1L, 2L, 
0L), residuals = structure(c(0.144002762945477, -0.257594259049227, 
169.62992413163, -40.455716409227, 3.98528254071288, 325.669119576814, 
-277.933508979317, 161.058607396831, 100.485413762468, 161.981734397248, 
-21.1101185099251, 467.511038095663, 167.408540762885, 264.467148159716, 
-870.459264535865, 1471.66097350626, 116.971877311758, -159.918791518434, 
967.205782005673, -64.1682010133445, -372.385939678148, 352.062155538701, 
632.526018003249, 1002.33521590517, 479.534164073812, 461.147699502253, 
-1091.4663608196, -614.056109041783), .Tsp = c(1, 28, 1), class = "ts"), 
call = arima(x = corona_total$Total_Cases, order = c(1, 2, 
    0)), series = "corona_total$Total_Cases", code = 0L, 
n.cond = 0L, nobs = 26L, model = list(phi = 0.165440211592995, 
    theta = numeric(0), Delta = c(2, -1), Z = c(1, 2, -1), 
    a = c(-779, 59138, 53578), P = structure(c(-2.22044604925031e-16, 
    2.86887593857152e-17, -5.56124814802562e-17, 2.86887593857152e-17, 
    -3.31423141286073e-17, -1.61722928090181e-32, -5.56124814802562e-17, 
    -3.75958688714994e-17, -5.56124814802562e-17), .Dim = c(3L, 
    3L)), T = structure(c(0.165440211592995, 1, 0, 0, 2, 
    1, 0, -1, 0), .Dim = c(3L, 3L)), V = structure(c(1, 0, 
    0, 0, 0, 0, 0, 0, 0), .Dim = c(3L, 3L)), h = 0, Pn = structure(c(1, 
    -5.4830714621183e-18, 1.21812129054869e-17, -5.48307146211831e-18, 
    -3.31423141286073e-17, -1.84889274661175e-32, 1.21812129054869e-17, 
    -3.75958688714994e-17, -5.56124814802562e-17), .Dim = c(3L, 
    3L))), x = structure(c(322, 400, 650, 888, 1128, 1694, 
2036, 2502, 3089, 3858, 4636, 5883, 7375, 9172, 10149, 12462, 
15113, 17660, 21157, 24747, 27980, 31506, 35713, 41035, 47021, 
53578, 59138, 63919), .Tsp = c(1, 28, 1), class = "ts")), class = "Arima"), 
level = c(80, 95), mean = structure(c(68571.1220751691, 73201.9225591844, 
77829.1955946478, 82455.8850482763, 87082.4779540027, 91709.0548868236, 
96335.6291770837, 100962.203030158, 105588.776810904, 110215.350579684, 
114841.924346485, 119468.498112958, 124095.071879377, 128721.645645786, 
133348.219412195, 137974.793178603, 142601.366945011, 147227.940711419, 
151854.514477827, 156481.088244235, 161107.662010643, 165734.235777051, 
170360.80954346, 174987.383309868, 179613.957076276, 184240.530842684, 
188867.104609092, 193493.6783755, 198120.252141908, 202746.825908316, 
207373.399674724, 211999.973441132, 216626.54720754, 221253.120973948, 
225879.694740356, 230506.268506765, 235132.842273173, 239759.416039581, 
244385.989805989, 249012.563572397, 253639.137338805, 258265.711105213, 
262892.284871621, 267518.858638029, 272145.432404437, 276772.006170845, 
281398.579937253, 286025.153703662, 290651.72747007, 295278.301236478, 
299904.875002886, 304531.448769294, 309158.022535702, 313784.59630211, 
318411.170068518, 323037.743834926, 327664.317601334, 332290.891367742, 
336917.46513415, 341544.038900558), .Tsp = c(29, 88, 1), class = "ts"), 
lower = structure(c(67852.5693904542, 71488.0378850631, 74869.4056219101, 
78042.7559156995, 81035.3037876344, 83865.5016552685, 86546.988586515, 
89090.4113186268, 91504.3946218833, 93796.1160212266, 95971.6728237902, 
98036.3298321095, 99994.6937502293, 101850.840164951, 103608.408563905, 
105270.675078771, 106840.60926587, 108320.919172912, 109714.087632186, 
111022.401864165, 112247.977899771, 113392.780933102, 114458.642437768, 
115447.274680314, 116360.283118863, 117199.177067588, 117965.378927058, 
118660.232219392, 119285.008620154, 119840.914142592, 120329.094601246, 
120750.640459457, 121106.591147333, 121397.938922313, 121625.632332819, 
121790.579335963, 121893.650112513, 121935.679615911, 121917.46988679, 
121839.792160025, 121703.388787634, 121508.974997728, 121257.240507039, 
120948.851002351, 120584.449504222, 120164.657624752, 119690.076729762, 
119161.289014511, 118578.858501069, 117943.331964511, 117255.239794357, 
116515.096796942, 115723.402943843, 114880.644070922, 113987.29253211, 
113043.807811626, 112050.637097962, 111008.215822666, 109916.968166633, 
108777.307536393, 67472.1905761175, 70580.7621429779, 73302.5874546909, 
75706.5864702675, 77834.1231526988, 79713.3753855171, 81365.1952663977, 
82805.8644073931, 84048.5730632326, 85104.2982790952, 85982.3650762524, 
86690.8252744766, 87236.7242194817, 87626.2949833746, 87865.1036821527, 
87958.1607268483, 87910.0076619409, 87724.7860890043, 87406.2931723477, 
86958.0269138267, 86383.2235034666, 85684.8884462828, 84865.8227394482, 
83928.6450686659, 82875.8107702521, 81709.6281410368, 80432.2725549711, 
79045.7987518185, 77552.151591525, 75953.1755121868, 74250.6228859222, 
72446.1614324952, 70541.3808230744, 68537.798584461, 66436.8653962784, 
64239.9698590982, 61948.4427995644, 59563.561168772, 57086.5515820169, 
54518.5935412548, 51860.8223759273, 49114.3319330342, 46280.1770432903, 
43359.3757867774, 40352.9115785747, 37261.7350923526, 34086.7660377659, 
30828.8948056289, 27488.983993257, 24067.8698209688, 20566.3634495346, 
16985.2522073028, 13325.3007348137, 9587.25205390016, 5771.82856756041, 
1879.73299626436, -2088.35074420535, -6131.75671876397, -10249.8361987147, 
-14441.9569333302), .Dim = c(60L, 2L), .Dimnames = list(NULL, 
    c("80%", "95%")), .Tsp = c(29, 88, 1), class = c("mts", 
"ts", "matrix")), upper = structure(c(69289.674759884, 74915.8072333057, 
80788.9855673855, 86869.0141808532, 93129.6521203709, 99552.6081183786, 
106124.269767652, 112833.994741689, 119673.158999925, 126634.585138142, 
133712.175869179, 140900.666393806, 148195.450008524, 155592.451126622, 
163088.030260485, 170678.911278435, 178362.124624152, 186134.962249926, 
193994.941323469, 201939.774624305, 209967.346121516, 218075.690621001, 
226262.976649151, 234527.491939421, 242867.631033688, 251281.88461778, 
259768.830291125, 268327.124531608, 276955.495663662, 285652.73767404, 
294417.704748202, 303249.306422807, 312146.503267748, 321108.303025584, 
330133.757147894, 339221.957677567, 348372.034433833, 357583.15246325, 
366854.509725187, 376185.334984769, 385574.885889976, 395022.447212698, 
404527.329236203, 414088.866273707, 423706.415304653, 433379.354716939, 
443107.083144745, 452889.018392812, 462724.59643907, 472613.270508444, 
482554.510211415, 492547.800741645, 502592.64212756, 512688.548533298, 
522835.047604926, 533031.679858227, 543277.998104707, 553573.566912819, 
563917.962101668, 574310.770264724, 69670.0535742206, 75823.0829753909, 
82355.8037346047, 89205.1836262851, 96330.8327553065, 103704.73438813, 
111306.06308777, 119118.541652923, 127128.980558576, 135326.402880273, 
143701.483616717, 152246.170951439, 160953.419539271, 169816.996308198, 
178831.335142237, 187991.425630358, 197292.726228081, 206731.095333834, 
216302.735783307, 226004.149574644, 235832.10051782, 245783.58310782, 
255855.796347471, 266046.121551069, 276352.103382299, 286771.433544331, 
297301.936663213, 307941.557999181, 318688.352692291, 329540.476304445, 
340496.176463526, 351553.785449769, 362711.713592006, 373968.443363436, 
385322.524084435, 396772.567154431, 408317.241746781, 419955.270910389, 
431685.428029961, 443506.533603539, 455417.452301683, 467417.090277392, 
479504.392699952, 491678.341489281, 503937.9532303, 516282.277249338, 
528710.393836741, 541221.412601694, 553814.470946882, 566488.732651987, 
579243.386556237, 592077.645331285, 604990.74433659, 617981.94055032, 
631050.511569476, 644195.754673588, 657416.985946874, 670713.539454249, 
684084.766467015, 697530.034734447), .Dim = c(60L, 2L), .Dimnames = list(
    NULL, c("80%", "95%")), .Tsp = c(29, 88, 1), class = c("mts", 
"ts", "matrix")), x = structure(c(322, 400, 650, 888, 1128, 
1694, 2036, 2502, 3089, 3858, 4636, 5883, 7375, 9172, 10149, 
12462, 15113, 17660, 21157, 24747, 27980, 31506, 35713, 41035, 
47021, 53578, 59138, 63919), .Tsp = c(1, 28, 1), class = "ts"), 
series = "corona_total$Total_Cases", fitted = structure(c(321.855997237055, 
400.257594259049, 480.37007586837, 928.455716409227, 1124.01471745929, 
1368.33088042319, 2313.93350897932, 2340.94139260317, 2988.51458623753, 
3696.01826560275, 4657.11011850993, 5415.48896190434, 7207.59145923711, 
8907.53285184028, 11019.4592645359, 10990.3390264937, 14996.0281226882, 
17819.9187915184, 20189.7942179943, 24811.1682010133, 28352.3859396781, 
31153.9378444613, 35080.4739819968, 40032.6647840948, 46541.4658359262, 
53116.8523004977, 60229.4663608196, 64533.0561090418), .Tsp = c(1, 
28, 1), class = "ts"), residuals = structure(c(0.144002762945477, 
-0.257594259049227, 169.62992413163, -40.455716409227, 3.98528254071288, 
325.669119576814, -277.933508979317, 161.058607396831, 100.485413762468, 
161.981734397248, -21.1101185099251, 467.511038095663, 167.408540762885, 
264.467148159716, -870.459264535865, 1471.66097350626, 116.971877311758, 
-159.918791518434, 967.205782005673, -64.1682010133445, -372.385939678148, 
352.062155538701, 632.526018003249, 1002.33521590517, 479.534164073812, 
461.147699502253, -1091.4663608196, -614.056109041783), .Tsp = c(1, 
28, 1), class = "ts")), class = "forecast")

This is the code I used to make the plot (ignore the dotted exponential curve):

plot(forecast, shaded = TRUE, shadecols=NULL, lambda = NULL, col = 1, fcol = 4, pi.col=1, 
     pi.lty=2, ylim = NULL, main = "Out-of-Sample Forecast", ylab = "Number of Cases", 
     xlab = "Days (since 23/03/2020)") + abline(v = 28:29, col= "#FF000033", lty=1, lwd=5)

Output:

Can anyone please help me with this?

I couldn't load your object in my R session, so I'm assuming your plot works like a regular one.

You have 2 options.

  1. Either you set options(scipen = 10) (or some high value), which is a quick fix, but if you need some plots with scientific notation and others without on the same graphics window, this will not work.

  2. You define the axis yourself, with the format you need. You can use axTicks(2) to get the position of default ticks and then format the labels as you need.

I recommend option 2. Here's a quick example :

x <- seq(1,10, l = 100)
y <- x*1e5

par(mfrow = c(1,2))

plot(x, y, main = "custom axis", yaxt = "n")
ticks <- axTicks(2) # get axis ticks
axis(2, at = ticks, labels = formatC(ticks, format = 'd')) # make axis

plot(x, y, main = "default axis")

Outputs :

在此处输入图片说明

You can take a look at other potential options in the answers to this post

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM