格子,xyplot,同一图表上的2个时间序列(叠加)

时间:2015-03-20 18:27:34

标签: r time-series lattice

我想使用xyplot在同一个图表上绘制两个时间序列。

这是我使用ts.plot()

的意思的一个例子
a1 = ts(rnorm(20), start=c(1980,1), freq=4)
a2 = a1+3
ts.plot(a1,a2)

我试过了

xyplot(merge(a1,a2))

返回错误,我试过

xyplot(merge(as.xts(a1),as.xts(a2)))

将它们绘制在不同的面板中,而不是在同一面板上。

2 个答案:

答案 0 :(得分:2)

您可以使用cbind(或者ts.union)组合两个时间序列对象。然后将superpose中的xyplot参数设置为TRUE

xyplot(cbind(a1, a2), superpose = TRUE)

time series plots superposed

简短说明:xyplot有一个处理ts(时间序列)对象的S3方法。当xyplot.ts的{​​{1}}参数是时间序列对象时,将调用此方法(x)。

答案 1 :(得分:1)

您可以使用as.layer()中的latticeExtra功能。它将第二个图作为第一个图层。因此,您必须确保x和y轴的限制是合适的。大多数参数默认取自第一个图。对于您的示例,必须使用第一个图中的ylim=c()键手动设置y轴。

library(lattice)
library(latticeExtra)

a1 <- ts(rnorm(20), start=c(1980,1), freq=4)
a2 <- a1+3

ymax <- max(c(a1,a2)) * 1.05
ymin <- min(c(a1,a2)) * 1.05

xyplot(a1, ylim=c(ymin,ymax)) + as.layer(xyplot(a2, col="black"))