Trama di coppie sovrapposti in base a condizioni
Domanda
** Modifica: ** Mi dispiace, ma la situazione potrebbe essere un po 'più complessa di quanto ho mostrato.Tuttavia, entrambi i tuoi script funzionano, anche se il primo potrebbe non essere così chiaro per il set di dati di grandi dimensioni dovuto al punto sovrapposizione!Grazie mille sacha!
Vorrei prima mostrare le coppie di diverse variabili, quindi sovrappongono i dati selezionati dello stesso set di dati.Di solito, il sovrapposizione può essere dolottato usando par(new=T)
come questo:
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")
.
Tuttavia, sembra che l'impostazione par()
non funzioni per tale utilizzo.
Allora, probabilmente la libreria di lattice potrebbe aiutare, ad esempio.splom()
, ma non so se funziona davvero e come.Qualcuno potrebbe dare alcuni suggerimenti?
Soluzione
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)
Altri suggerimenti
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)])