题
**编辑:**我很抱歉,但情况可能会比我显示的更复杂。但是,这两个脚本都在工作,虽然由于点重叠而第一个可能对大型数据集不那么清晰!非常感谢Sacha!
我想首先显示几对的几个变量,然后叠加相同数据集的所选数据。通常,可以使用像这样的生成型仪器来实现叠加:
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(new=T)
设置不适用于这种用法。
然后,可能是格子库可以帮助,前。par()
,但我不知道它是否真的有效,以及如何。有人能提供一些建议吗?
解决方案
I assume paris
must be pairs
? The pairs
function doesn't have an add
argument or so, it would probably also not be that trivial since the plot has 9 panels (simply doing points
will plot in the last panel). but it is not that hard to do what you want in a single plot using 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)
Edit:
Another thing you can do in pairs
is actually set the function you want to do in each panel. By default this is points
, but you can extend that to include some conditions:
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)
This gives the same picture as before (well different points because I didnt set a seed). Simply making the color vector would be easier to accomplish this, but you can make the panel function as big as you would like.
Also, the ...
allow other arguments to be passed to the points
function:
pairs(m,panel=panelfun,pch=16)
其他提示
lattice::splom
works fine. The color indexing needs to be boosted by 1 since R indexing is 1 based rather than zero-based and the logical vectors get coerced as 0 and 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)])