Esistono numerosi problemi che rendono difficile o impossibile estrarre qualsiasi informazione utilizzabile dalla matrice scatterplot.
Hai troppe variabili visualizzate insieme. Quando ci sono molte variabili in una matrice scatterplot, ogni trama diventa troppo piccola per essere utile. La cosa da notare è che molti grafici sono duplicati, il che spreca spazio. Inoltre, anche se vuoi vedere ogni combinazione, non devi tracciarle tutte insieme. Si noti che è possibile suddividere una matrice scatterplot in blocchi più piccoli di quattro o cinque (un numero che è utilmente visualizzabile). Devi solo creare più grafici, uno per ogni blocco.
Dato che hai molti dati in punti discreti nello spazio , si accumulano uno sopra l'altro. Pertanto, non puoi vedere quanti punti ci sono in ogni posizione. Esistono diversi trucchi per aiutarti ad affrontare questo.
- .5
- Con così tanti dati, anche il jitter renderà difficile distinguere gli schemi. È possibile utilizzare colori altamente saturi, ma in gran parte trasparenti per tenere conto di ciò. Dove ci sono molti dati impilati uno sopra l'altro, il colore diventerà più scuro e dove c'è poca densità, il colore sarà più chiaro.
- Perché la trasparenza funzioni, avrai bisogno di simboli solidi per visualizzare i tuoi dati, mentre R usa i cerchi vuoti per impostazione predefinita.
Utilizzando queste strategie, ecco alcuni esempi di codice R e i grafici realizzati:
# 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) }
}
}