2012-10-03 3 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")) 
    } 
    ) 

올바른 플롯은 "2 개"패널에서 맨 위 두 점만 빨간색으로 표시됩니다.

답변

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의 다른 모든 값은 첫 번째 색을 사용합니다.

관련 문제