根据条件叠加对图

Mar*_*rco 0 r par lattice

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

我想首先显示几个变量对,然后叠加同一数据集的选定数据。通常,可以使用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")
Run Code Online (Sandbox Code Playgroud)

然而,该设置似乎par()不适用于这种用途。

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

Sac*_*amp 5

我想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)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

编辑:

您可以做的另一件事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)
Run Code Online (Sandbox Code Playgroud)

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

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

pairs(m,panel=panelfun,pch=16)
Run Code Online (Sandbox Code Playgroud)