如何使用R lattice xyplot对依赖于数值阈值的点进行着色

时间:2012-10-03 23:42:33

标签: r lattice scatter-plot

我想根据z的值为每个面板中的点着色。 我目前拥有的代码不区分每个面板的z值。 我意识到我需要一个面板功能,panel.superpose可能会有所帮助,但我迷路了。

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

正确的情节只会在“两个”面板中将两个点涂成红色。

1 个答案:

答案 0 :(得分: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))FALSE放在TRUE之前,因此这决定了组颜色的排序。因此,z<5的所有值都采用第二种颜色,z的所有其他值采用第一种颜色。