fpp2软件包具有出色的功能ggseaonplot()。我想通过将xts对象转换成一个矩阵来使用它,其中“ Years”是行名,而12month是列名。
#here is the data. This is stock data from yahoo finance
library(quantmod)
getSymbols("SPY")
adjusted = Ad(SPY)
head(adjusted)
#here is an example of what I would like the data to look like using the
AirPassengers matrix.
dput(AirPassengers)
structure(c(112, 118, 132, 129, 121, 135, 148, 148, 136, 119,
104, 118, 115, 126, 141, 135, 125, 149, 170, 170, 158, 133, 114,
140, 145, 150, 178, 163, 172, 178, 199, 199, 184, 162, 146, 166,
171, 180, 193, 181, 183, 218, 230, 242, 209, 191, 172, 194, 196,
196, 236, 235, 229, 243, 264, 272, 237, 211, 180, 201, 204, 188,
235, 227, 234, 264, 302, 293, 259, 229, 203, 229, 242, 233, 267,
269, 270, 315, 364, 347, 312, 274, 237, 278, 284, 277, 317, 313,
318, 374, 413, 405, 355, 306, 271, 306, 315, 301, 356, 348, 355,
422, 465, 467, 404, 347, 305, 336, 340, 318, 362, 348, 363, 435,
491, 505, 404, 359, 310, 337, 360, 342, 406, 396, 420, 472, 548,
559, 463, 407, 362, 405, 417, 391, 419, 461, 472, 535, 622, 606,
508, 461, 390, 432), .Tsp = c(1949, 1960.91666666667, 12), class = "ts")
这是最终项目应类似于的内容。
library(fpp2)
ggseasonplot(AirPassengers)
答案 0 :(得分:2)
class(adjusted)
#[1] "xts" "zoo"
adjusted
的类型为xts
,但ggseasonplot
需要的对象类型为ts
。
这里是ggplot2
的替代方式
准备数据
library(zoo)
df <- data.frame(date = index(adjusted),value = coredata(adjusted),row.names = NULL)
df$month <- factor(format(df$date, "%b"), levels = month.abb)
df$year <- format(df$date, "%Y")
绘制数据
library(ggplot2)
ggplot(df) +
aes(month, SPY.Adjusted, group = year, color = year) +
geom_line()