2012-10-03 33 views
4

我想根據z的值爲每個面板着色點。 我目前擁有的代碼不能區分每個面板的z值。 我意識到我需要一個面板功能和panel.superpose可能會有幫助,但我迷路了。如何使用R格xyplot依賴於數值閾值的顏色點

x <- c(1:10, 1:10) 
y <- c(10:1, 10:1) 
z <- c(1:10, seq(1,20, by=2)) 
a = c(rep("one",10),rep("two",10)) 

xyplot(y ~ x |a, 
    panel=function(x,y, ...) { 
    panel.xyplot(x,y, pch=20, cex=0.3, col = ifelse(z < 5, "red", "black")) 
    } 
    ) 

正確的情節只會在「兩個」面板中有兩個紅色的頂點。

回答

5

這應該是你想要什麼:

DF <- data.frame(x, y, z, a) 

xyplot(y ~ x | a, groups = z < 5, data = DF, col = c("black", "red"), 
pch=20, cex=0.3) 

enter image description here

爲了澄清顏色的順序,z < 5創建一個邏輯載體。由於order(c(TRUE,FALSE))TRUE之前放入FALSE,這決定了組顏色的排序。因此,z<5的所有值都採用第二種顏色,而z的所有其他值採用第一種顏色。