Наложение парных участков на основе условия - PullRequest
0 голосов
/ 20 февраля 2011

** Редактировать: ** Извините, но ситуация может быть немного сложнее, чем я показал. Однако оба ваших сценария работают, хотя первый может быть не очень понятен для большого набора данных из-за наложения точек! Большое спасибо, Саша!

Я хотел бы сначала показать пары нескольких переменных, а затем наложить выбранные данные одного и того же набора данных. Обычно наложение может быть достигнуто с помощью 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")

Однако, похоже, настройка par() не работает для такого использования.

Тогда, возможно, библиотека решетки могла бы помочь, напр. splom(), но я не знаю, действительно ли это работает и как. Может ли кто-нибудь дать некоторые предложения?

Ответы [ 2 ]

4 голосов
/ 20 февраля 2011

Я полагаю, 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)

enter image description here

Редактировать:

Еще одна вещь, которую вы можетеdo in 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)

Это дает ту же картину, что и раньше (очень разные точки, потому что я не установил начальное число).Простого создания цветового вектора было бы проще сделать, но вы можете сделать функцию панели настолько большой, насколько вам бы хотелось.

Кроме того, ... позволяет передавать другие аргументы в функцию points:

pairs(m,panel=panelfun,pch=16)
0 голосов
/ 03 мая 2012

lattice::splom работает отлично. Индексирование цвета должно быть увеличено на 1, так как индексирование R основано на 1, а не на нулевом уровне, и логические векторы приводятся как 0 и 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

...