Как установить ylim для xyplot объекта зоопарка (решетка) - PullRequest
3 голосов
/ 09 июня 2011

У меня есть объект зоопарка, который выглядит следующим образом:

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")

Я попытался использовать решетку, чтобы построить оба столбца одновременно на 2 разных панелях:
xyplot(z)

Это дает мне одну и ту же ось x для обеих панелей, но разные ylim. Я хочу, чтобы у них был тот же самый ylim, поэтому я попробовал xyplot(z, ylim=range(z[,1])), но он ничего не делал, поэтому после прочтения "Сюжетный зоопарк с решеткой" я попытался trellis.focus("panel", 2,1,ylim=range(z[,1])) тоже безуспешно ...

Вероятно, это легко сделать, но я считаю, что пакет решетки очень сложен в использовании (по крайней мере, для начала). Кто-нибудь может помочь?

Спасибо!

Ответы [ 2 ]

3 голосов
/ 09 июня 2011

Попробуйте xyplot(z, ylim=range(z, na.rm=TRUE)).

Есть две вещи:

  1. na.rm=TRUE заставить range работать правильно
  2. range(z) вместо range(z[,1]) позволяет обрабатывать диапазон всех данных, а не только один столбец.

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, решетка_0.19-26

2 голосов
/ 10 июня 2011

xyplot.zoo принимает большинство xyplot аргументов так:

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

или этот вариант:

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