Superposer le tracé des paires en fonction de la condition
Question
**Edit :**Je suis désolé, mais la situation pourrait être un peu plus complexe que ce que je l'ai montré.Cependant, vos deux scripts fonctionnent, même si le premier peut ne pas être aussi clair pour un grand ensemble de données en raison du chevauchement de points !Merci beaucoup Sacha!
Je voudrais d'abord montrer les paires de plusieurs variables, puis superposer les données sélectionnées du même ensemble de données.Habituellement, la superposition peut être réalisée en utilisant par(new=T)
comme ça:
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")
Cependant, il semble que le par()
le paramètre ne fonctionne pas pour une telle utilisation.
Ensuite, une bibliothèque de treillis pourrait probablement aider, par exemple. splom()
, mais je ne sais pas si cela fonctionne vraiment, et comment.Quelqu'un pourrait-il donner quelques suggestions ?
La solution
je suppose paris
doit être pairs
?Le pairs
la fonction n'a pas de add
argument ou autre, ce ne serait probablement pas si trivial puisque l'intrigue comporte 9 panneaux (faisant simplement points
tracera dans le dernier panneau).mais ce n'est pas si difficile de faire ce que vous voulez dans une seule intrigue en utilisant 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)
Modifier:
Une autre chose que vous pouvez faire dans pairs
consiste en fait à définir la fonction que vous souhaitez effectuer dans chaque panneau.Par défaut c'est points
, mais vous pouvez étendre cela pour inclure certaines 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)
Cela donne la même image qu'avant (enfin des points différents car je n'ai pas mis de graine).Il serait plus facile de créer simplement le vecteur de couleur, mais vous pouvez rendre le panneau aussi grand que vous le souhaitez.
Également ...
permettre à d'autres arguments d'être transmis au points
fonction:
pairs(m,panel=panelfun,pch=16)
Autres conseils
lattice::splom
fonctionne bien.L'indexation des couleurs doit être augmentée de 1 puisque l'indexation R est basée sur 1 plutôt que sur zéro et les vecteurs logiques sont contraints à 0 et 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)])