#r #lattice #zoo
#r #решетка #зоопарк
Вопрос:
У меня есть объект 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")
Я попытался использовать решетку для одновременного отображения обоих столбцов на 2 разных панелях:
xyplot(z)
Это дает мне одинаковую ось x для обеих панелей, но разный ylim. Я хочу, чтобы у них был одинаковый ylim, поэтому я попробовал, xyplot(z, ylim=range(z[,1]))
это ничего не дало, поэтому после прочтения «Построить серию зоопарка с решеткой» я попробовал trellis.focus("panel", 2,1,ylim=range(z[,1]))
также безуспешно…
Это, вероятно, легко сделать, но я нахожу пакет lattice очень сложным в использовании (по крайней мере, для начала). Кто-нибудь может помочь?
Спасибо!
Комментарии:
1. пожалуйста, используйте
dput(head(z))
для предоставления примеров данных2. > dput(head(z)): структура(c(6, 11, 3.6, 8.4, 8.9, 0, NA, NA, NA, NA, NA, NA, NA), .Dim = c(6L, 2L), .Dimnames = list(NULL, c(«2234», «2234.1»)), индекс = структура (c(-17746, -17745, -17744, -17743, -17742, -17741), class = «Дата»), class = «зоопарк»)
3. ОК. Я думаю, я знаю, в чем проблема. У вас есть
NA
данные, иrange
вам нужно их обработать, что вам и нужно сделатьrange(z, na.rm=TRUE)
(см. Мой отредактированный ответ).4. Я рад, что помог. Для дальнейшего использования: вы могли бы отредактировать свой вопрос вместо добавления чего-либо в комментарии. Я делаю это за вас (я немного изменил данные, потому что во втором столбце было все
NA
).
Ответ №1:
Попробуйте xyplot(z, ylim=range(z, na.rm=TRUE))
.
Есть две вещи:
na.rm=TRUE
заставитьrange
работать должным образом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))
Примечание: 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)))
Комментарии:
1. Вы заметили, что мое решение разместило y-галочки в левой части каждой панели, а ваше — на первой левой панели, на второй правой?
2. @Marek, я добавил вариант, который помещает их все слева.
3. Гротендик хороший. Мне нравится эта простота синтаксиса в решетке.