【问题标题】:Lattice, xyplot, 2 time series on same graph (overlay)格子,xyplot,同一图上的 2 个时间序列(叠加)
【发布时间】:2015-03-28 03:44:33
【问题描述】:

我想使用 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)))

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

【问题讨论】:

    标签: r time-series lattice


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2012-11-02
        • 1970-01-01
        • 1970-01-01
        • 2017-06-04
        • 1970-01-01
        • 1970-01-01
        • 2019-01-29
        • 2020-03-03
        • 1970-01-01
        相关资源
        最近更新 更多