Superponer los pares de parcela basados en la condición
Pregunta
**Edit:**lo siento, pero la situación podría ser un poco más complejo de lo que me han demostrado.Sin embargo, tanto de los scripts de trabajo, aunque la primera no puede ser tan clara para gran conjunto de datos debido al punto de solapamiento!Muchas gracias Sacha!
Me gustaría mostrar primero los pares de varias variables, y luego superponer los datos seleccionados del mismo conjunto de datos.Generalmente, la superponer puede ser logrado mediante par(new=T)
como este:
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")
Sin embargo, parece que el par()
configuración no funciona para tal uso.
Entonces, probablemente entramado de la biblioteca podría ayudar, ex. splom()
, pero no sé si realmente funciona, y cómo.Podría alguien dar algunas sugerencias?
Solución
Supongo paris
debe ser pairs
?El pairs
la función no tiene un add
argumento o así, es probable que también no ser trivial, ya que la parcela tiene 9 paneles (simplemente haciendo points
se parcela en el último panel).pero no es difícil hacer lo que quiere en una sola parcela de uso 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)
Editar:
Otra cosa que puedes hacer en pairs
es en realidad la función que usted desea hacer en cada panel.Por defecto, este es points
, pero se puede extender para incluir algunas condiciones:
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)
Esto le da la misma imagen, como antes (bien diferentes puntos porque yo no establecer una semilla).Simplemente haciendo que el color del vector sería más fácil de lograr esto, pero usted puede hacer la función del panel tan grande como usted quisiera.
También, la ...
permitir que otros argumentos que se pasan a la points
función:
pairs(m,panel=panelfun,pch=16)
Otros consejos
lattice::splom
funciona bien.El color de indización debe ser impulsado por 1 siendo R la indexación basada en 1 en lugar de partir de cero y la lógica de los vectores de obtener forzado como 0 y 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)])