4

我想根据 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"))
   }
   )

正确的绘图只会在“两个”面板中显示顶部的两个点为红色。

4

1 回答 1

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)

在此处输入图像描述

为了阐明颜色的顺序,z < 5创建一个逻辑向量。由于order(c(TRUE,FALSE))puts FALSEbefore TRUE,这决定了组颜色的顺序。因此,所有值z<5采用第二种颜色,所有其他值z采用第一种颜色。

于 2012-10-04T08:13:29.583 回答