如何为动物园对象(格子)的xyplot设置ylim

时间:2011-06-09 16:11:42

标签: r lattice zoo

我有一个动物园对象,如下所示:

z <- structure(c(6, 11, 3.6, 8.4, 8.9, 0, NA, 0.5, 7, NA, 9, NA),
    .Dim = c(6L, 2L), .Dimnames = list(NULL, c("2234", "2234.1")), index = structure(c(-17746, -17745, -17744, -17743, -17742, -17741), class = "Date"),
    class = "zoo")

我尝试使用网格在两个不同的面板中同时绘制两个列:
xyplot(z)

这给了我两个面板的x轴相同但ylim不同。我希望他们拥有相同的ylim,所以我尝试了xyplot(z, ylim=range(z[,1]))它没有做任何事情,所以在阅读“Plot zoo Series with Lattice”之后我试了trellis.focus("panel", 2,1,ylim=range(z[,1]))也没有任何运气......

这可能是一件容易的事,但我发现格子包非常难以使用(至少从一开始)。有人可以帮忙吗?

谢谢!

2 个答案:

答案 0 :(得分:3)

尝试xyplot(z, ylim=range(z, na.rm=TRUE))

有两件事:

  1. na.rm=TRUE导致range正常工作
  2. range(z)代替range(z[,1])可让您处理所有数据的范围,而不仅仅是一列。
  3. require(lattice)
    require(zoo)
    z <- zoo(cbind(a=1:4,b=11:14), Sys.Date()+(1:4)*10)
    xyplot(z, ylim=range(z, na.rm=TRUE))
    

    It works

    注意:R版本2.13.0,zoo_1.6-5,lattice_0.19-26

答案 1 :(得分:2)

xyplot.zoo接受大多数xyplot个参数,所以:

xyplot(z, scales = list(y = list(relation = "same")))

或此变体:

xyplot(z, scales = list(y = list(relation = "same", alternating = FALSE)))