Pergunta

**Editar:**Sinto muito, mas a situação pode ser um pouco mais complexa do que mostrei.No entanto, ambos os seus scripts funcionam, embora o primeiro possa não ser tão claro para grandes conjuntos de dados devido à sobreposição de pontos!Muito obrigado Sacha!

Gostaria primeiro de mostrar os pares de diversas variáveis ​​e depois sobrepor os dados selecionados do mesmo conjunto de dados.Normalmente, a sobreposição pode ser obtida usando par(new=T) assim:

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")

Contudo, parece que o par() configuração não funciona para esse tipo de uso.

Então, provavelmente a biblioteca treliça poderia ajudar, ex. splom(), mas não sei se realmente funciona e como.Alguém poderia dar algumas sugestões?

Foi útil?

Solução

eu assumo paris devemos ser pairs?O pairs função não tem um add argumento ou algo assim, provavelmente também não seria tão trivial, já que o enredo tem 9 painéis (simplesmente fazendo points será plotado no último painel).mas não é tão difícil fazer o que você quer em um único enredo usando 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)

enter image description here

Editar:

Outra coisa que você pode fazer em pairs na verdade é definir a função que você deseja executar em cada painel.Por padrão, isso é points, mas você pode estender isso para incluir algumas condições:

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)

Isso dá a mesma imagem de antes (pontos bem diferentes porque não coloquei uma semente).Simplesmente criar o vetor de cores seria mais fácil de conseguir isso, mas você pode fazer o painel funcionar tão grande quanto desejar.

Também o ... permitir que outros argumentos sejam passados ​​para o points função:

pairs(m,panel=panelfun,pch=16)

Outras dicas

lattice::splom funciona bem.A indexação de cores precisa ser aumentada em 1, pois a indexação R é baseada em 1, em vez de baseada em zero, e os vetores lógicos são coagidos como 0 e 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)])

enter image description here

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top