在R中获取多元时间序列的堆积区域图(xts对象)

时间:2015-04-10 12:28:48

标签: r datetime ggplot2 xts

我有一个多变量的时间序列,想要得到一个堆积区域图。如何使用ggplot2完成此操作?

数据可能看起来像这样:

dates = as.Date(c("2015-04-07","2015-04-08","2015-04-09"))
stocks = xts(c(0.4,0.7,0.9),order.by = dates)
dates = as.Date(c("2015-04-07","2015-04-08","2015-04-09","2015-04-10"))
bonds = xts(c(0.6,0.3,0.1,1),order.by = dates)

example.data = merge(stocks,bonds)

我对ggplot很新。以上数据采用长格式。我见过宽格式的例子。如何在不改变数据结构的情况下使用x轴的数据索引?

1 个答案:

答案 0 :(得分:1)

在不更改数据结构的情况下,您可以尝试以下方法:

qplot(rep(index(example.data),2), c(coredata(example.data$stocks), 
coredata(example.data$bonds)), geom = "blank") + 
geom_area(aes(colour = rep(c("stocks", "bonds"), each = 4), 
fill = rep(c("stocks", "bonds"),each = 4)))

给出了:

enter image description here

或使用melt中的reshape2

library(reshape2)
df <- data.frame(time = index(example.data), melt(as.data.frame(example.data)))
ggplot(df, aes(x = time, y = value)) + 
    geom_area(aes(colour = variable, fill = variable))