在格点图R中给数据子集着色

在格点图R中给数据子集着色,r,lattice,R,Lattice,我已在lattice中绘制了一个xyplot贝类捕获率图,按调查区域分组,使用以下代码: xyplot(catch.rate ~ Year | Area, data, xlab = "Year", ylab = "Catch rate", col ="black", par.settings = list(strip.background=list(col="white"))) 我有一年的数据,我想用不同的颜色(例如红色)在图上突出显示。我创建了此数据的一个子集: subset <

我已在
lattice
中绘制了一个
xyplot
贝类捕获率图,按调查区域分组,使用以下代码:

xyplot(catch.rate ~ Year | Area, data, xlab = "Year", ylab = "Catch rate",
    col ="black", par.settings = list(strip.background=list(col="white")))
我有一年的数据,我想用不同的颜色(例如红色)在图上突出显示。我创建了此数据的一个子集:

subset <- grep("^0214A",data$Haul_ID,ignore.case=TRUE)

subset对于没有条件变量的绘图,参数
col=
接受与绘图点平行的向量,例如

xyplot(mpg~disp, mtcars, col=mtcars$cyl, pch=20, cex=4)
按圆柱体的数量对点进行着色。也许你会这么做

cols=c("red", "green")[grepl("^0214A", data$Haul_ID, ignore.case=TRUE) + 1L]
对于带有条件变量的绘图,可以编写一个面板函数,该函数接受
向量和
下标
,即描述当前绘图行的数据索引。将参数传递给panel函数到
panel.xyplot()
,调整每个点的颜色以反映面板中的数据子集。这是面板函数

panel <- function(..., col, subscripts) {
    panel.xyplot(..., col=col[subscripts])
}

谢谢你,马丁。不幸的是,当我运行上面的cols行,然后在我的绘图中使用col=cols时,它没有突出显示代表0214A的正确点。我试过一些ifelse行,但这似乎也不起作用。请您添加一个您想要获得的绘图示例。谢谢
xyplot(mpg ~ disp | factor(cyl), mtcars, col=mtcars$cyl, 
       panel=panel, pch=20, cex=4)