Il existe un certain nombre de problèmes qui rendent difficile, voire impossible, l'extraction d'informations utilisables à partir de votre matrice de nuage de points.
Vous avez trop de variables affichées ensemble. Lorsque vous avez beaucoup de variables dans une matrice de nuage de points, chaque tracé devient trop petit pour être utile. La chose à noter est que de nombreux tracés sont dupliqués, ce qui gaspille de l'espace. De plus, bien que vous souhaitiez voir toutes les combinaisons, vous n'avez pas besoin de les représenter toutes ensemble. Notez que vous pouvez diviser une matrice de nuage de points en blocs plus petits de quatre ou cinq (un nombre qui est utilement visualisable). Il vous suffit de créer plusieurs tracés, un pour chaque bloc.
Puisque vous avez beaucoup de données à des points discrets de l'espace , elles finissent par s'empiler les unes sur les autres. Ainsi, vous ne pouvez pas voir le nombre de points à chaque emplacement. Il existe plusieurs astuces pour vous aider à y faire face.
- .5
- Avec autant de données, même le tremblement rendra les motifs difficiles à discerner. Vous pouvez utiliser des couleurs très saturées, mais largement transparentes pour en tenir compte. Là où il y a beaucoup de données empilées les unes sur les autres, la couleur deviendra plus sombre et là où il y a peu de densité, la couleur sera plus claire.
- Pour que la transparence fonctionne, vous aurez besoin de symboles pleins pour afficher vos données, tandis que R utilise des cercles creux par défaut.
En utilisant ces stratégies, voici un exemple de code R et les tracés réalisés:
# 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) }
}
}