2011-06-09 57 views
3

我有一個動物園的對象,看起來像這樣:如何設置ylim的動物園對象的xyplot(格子)

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)

這給了我兩個面板,但不同ylim相同的x軸。我希望他們有相同的ylim所以我想xyplot(z, ylim=range(z[,1]))它沒有做任何事情,所以讀「與格子情節動物園系列」後,我試圖trellis.focus("panel", 2,1,ylim=range(z[,1]))還沒有任何的運氣...

這可能是一件容易的事情但是我發現格子包非常難以使用(至少從頭開始)。誰能幫忙?

謝謝!

+0

請使用'dput(頭(Z))',以提供示例性數據 – Marek 2011-06-09 16:33:02

+0

> dput(頭(Z)):結構(C(6,11,3.6,8.4,8.9, 0,NA,NA,NA,NA,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」) – sbg 2011-06-09 16:47:08

+0

好的。我想我知道問題在哪裏。你在數據和'範圍'中有'NA'需要處理它,所以你需要做'range(z,na.rm = TRUE)'(見我編輯的答案)。 – Marek 2011-06-09 16:51:05

回答

3

嘗試​​。

有兩件事情:

  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,lattice_0.19-26

+0

謝謝!看起來我太過於複雜了:) – sbg 2011-06-09 16:56:36

2

xyplot.zoo接受最xyplot論爭:

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

或這種變化:

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

您是否注意到我的解決方案將y-ticks放置在每個面板的左側,並將左側的第一個面板放置在右側? – Marek 2011-06-10 07:58:00

+0

@Marek,我添加了一個變體,將它們全部放在左邊。 – 2011-06-10 11:34:07

+0

格洛騰迪克尼斯。我喜歡格子中這種簡單的語法。 – Marek 2011-06-10 12:54:42