Існує ряд питань, які ускладнюють або неможливо отримати будь-яку корисну інформацію з вашої матриці розсіювання.
У вас занадто багато змінних, відображених разом. Коли у матриці розселення є багато змінних, кожен графік стає занадто малим, щоб бути корисним. Що потрібно помітити, це те, що багато сюжетів дублюються, що витрачає простір. Крім того, хоча ви хочете бачити кожну комбінацію, вам не потрібно складати їх усі разом. Зауважте, що ви можете розбити матрицю розсіювання на більш дрібні блоки з чотирьох або п'яти (число, яке корисно візуалізувати). Вам просто потрібно зробити кілька сюжетів, по одному для кожного блоку.
Оскільки у вас дуже багато даних у дискретних точках у просторі , вони складаються один на одного. Таким чином, ви не бачите, скільки балів у кожній локації. Існує кілька хитрощів, які допоможуть вам впоратися з цим.
- .5
- Маючи стільки даних, навіть тремтіння зробить малюнки важкими для розрізнення. Ви можете використовувати кольори, які є дуже насиченими, але значною мірою прозорими для цього. Там, де багато даних, розміщених один на одного, колір стане темнішим, а там, де є невелика щільність, колір стане світлішим.
- Щоб прозорість працювала, вам потрібні суцільні символи для відображення даних, тоді як R використовує порожні кола за замовчуванням.
Використовуючи ці стратегії, ось декілька прикладів R-коду та зроблених сюжетів:
# the alpha argument in rgb() lets you set the transparency
cols2 = c(rgb(red=255, green=0, blue=0, alpha=50, maxColorValue=255),
rgb(red=0, green=0, blue=255, alpha=50, maxColorValue=255) )
cols2 = ifelse(breast$class==2, cols2[1], cols2[2])
# here we jitter the data
set.seed(6141) # this makes the example exactly reproducible
jbreast = apply(breast[,1:9], 2, FUN=function(x){ jitter(x, amount=.5) })
jbreast = cbind(jbreast, class=breast[,10]) # the class variable is not jittered
windows() # the 1st 5 variables, using pch=16
pairs(jbreast[,1:5], col=cols2, pch=16)
windows() # the 2nd 5 variables
pairs(jbreast[,6:10], col=cols2, pch=16)
windows() # to match up the 1st & 2nd sets requires more coding
layout(matrix(1:25, nrow=5, byrow=T))
par(mar=c(.5,.5,.5,.5), oma=c(2,2,2,2))
for(i in 1:5){
for(j in 6:10){
plot(jbreast[,j], jbreast[,i], col=cols2, pch=16,
axes=F, main="", xlab="", ylab="")
box()
if(j==6 ){ mtext(colnames(jbreast)[i], side=2, cex=.7, line=1) }
if(i==5 ){ mtext(colnames(jbreast)[j], side=1, cex=.7, line=1) }
if(j==10){ axis(side=4, seq(2,10,2), cex.axis=.8) }
if(i==1 ){ axis(side=3, seq(2,10,2), cex.axis=.8) }
}
}