0

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

我想先显示几个变量的对,然后将同一数据集的选定数据叠加。通常,可以使用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(),但我不知道它是否真的有效,以及如何。有人可以提出一些建议吗?

4

2 回答 2

4

我认为paris必须是pairs?该pairs函数没有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)

在此处输入图像描述

编辑:

您可以做的另一件事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)
于 2011-02-20T12:48:07.007 回答
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)])

在此处输入图像描述

于 2012-05-02T22:25:31.070 回答