根据条件叠加对图

时间:2011-02-20 12:34:39

标签: r lattice par

**编辑:**对不起,但情况可能比我所表现的要复杂一些。但是,两个脚本都可以工作,尽管由于点重叠,第一个脚本可能不太清楚大数据集!非常感谢Sacha!

我想首先显示几个变量对,然后叠加相同数据集的选定数据。通常,可以使用par(new=T)来实现叠加:

h<-rnorm(nc)  # this variable was used for conditioning
x<-rnorm(nc)
y<-rnorm(nc)
z<-rnorm(nc)
m<-cbind(x,y,z)
pairs(m)
par(new=T)
pairs(m[h>0.7,],col="red")

但是,par()设置似乎不适用于此类用途。

然后,可能格子库可以提供帮助,例如。 splom(),但我不知道它是否真的有效,以及如何运作。有人可以提出一些建议吗?

2 个答案:

答案 0 :(得分:4)

我认为paris必须是pairspairs函数没有add参数左右,因为情节有9个面板(简单地做points将在最后一个面板中绘图),它可能也不会那么微不足道。但是使用col

在单个地块中做你想做的事并不难
nc <- 100
set.seed(1)
x<-rnorm(nc)
y<-rnorm(nc)
z<-rnorm(nc)
m<-cbind(x,y,z)

cols <- ifelse(x>0.7,"red","black")
pairs(m,col=cols)

enter image description here

编辑:

您在pairs中可以做的另一件事实际上是设置您想要在每个面板中执行的功能。默认情况下,这是points,但您可以将其扩展为包含一些条件:

nc <- 100

X<-rnorm(nc)
Y<-rnorm(nc)
Z<-rnorm(nc)
m<-cbind(X,Y,Z)

panelfun <- function(x,y,foo=X,...){
    points(x[foo<0.7],y[foo<0.7],col="black",...)
    points(x[foo>0.7],y[foo>0.7],col="red",...)
}

pairs(m,panel=panelfun)

这给出了与以前相同的图片(因为我没有设置种子,因此不同点)。简单地制作颜色矢量会更容易实现,但您可以使面板功能尽可能大。

此外,...允许将其他参数传递给points函数:

pairs(m,panel=panelfun,pch=16)

答案 1 :(得分:0)

lattice::splom运行正常。颜色索引需要增加1,因为R索引是基于1而不是从零开始,逻辑向量被强制为0和1。

library(lttice)
nc=100; h<-rnorm(nc)  
x<-rnorm(nc)
y<-rnorm(nc)
z<-rnorm(nc)
m<-cbind(x,y,z)
splom(m, col=c("blue", "red")[1+(h>0.7)])

enter image description here