Istnieje wiele problemów, które utrudniają lub uniemożliwiają wydobycie użytecznych informacji z macierzy wykresów rozrzutu.
Masz zbyt wiele zmiennych wyświetlanych razem. Kiedy masz wiele zmiennych w macierzy wykresów rozrzutu, każdy wykres staje się zbyt mały, aby był użyteczny. Należy zauważyć, że wiele wykresów jest powielonych, co marnuje miejsce. Ponadto, chociaż chcesz zobaczyć każdą kombinację, nie musisz kreślić ich wszystkich razem. Zauważ, że możesz rozbić matrycę wykresu rozrzutu na mniejsze bloki po cztery lub pięć (liczba, którą można wizualizować). Musisz tylko utworzyć wiele wykresów, po jednym dla każdego bloku.
Ponieważ masz wiele danych w dyskretnych punktach w przestrzeni , ostatecznie układają się jeden na drugim. Dlatego nie możesz zobaczyć, ile punktów znajduje się w każdej lokalizacji. Istnieje kilka sztuczek, które pomogą ci sobie z tym poradzić.
- .5 wydaje się dobrym wyborem.
- Przy tak dużej ilości danych nawet drżenie sprawi, że wzory będą trudne do rozpoznania. Możesz użyć kolorów o wysokim nasyceniu, ale w dużej mierze przezroczystych . Tam, gdzie na sobie nakłada się wiele danych, kolor będzie ciemniejszy, a tam, gdzie gęstość jest niewielka, kolor będzie jaśniejszy.
- Aby przezroczystość zadziałała, potrzebujesz solidnych symboli do wyświetlania danych, podczas gdy R domyślnie używa pustych kół.
Korzystając z tych strategii, oto przykładowy kod R i wykonane wykresy:
# 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) }
}
}