我想使用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)))
将它们绘制在不同的面板中,而不是在同一面板上。
答案 0 :(得分:2)
您可以使用cbind
(或者ts.union
)组合两个时间序列对象。然后将superpose
中的xyplot
参数设置为TRUE
:
xyplot(cbind(a1, a2), superpose = TRUE)
简短说明: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"))