Diagramme de dispersion en R
Diagramme de dispersion simple
Il existe de nombreuses façons de créer un nuage de points dans R. La fonction de base est plot(x , y)
, où x
et y
sont des vecteurs numériques représentant les points (x,y) à tracer.
# Simple Scatterplot
attach(mtcars)
plot(wt, mpg, main="Scatterplot Example",
xlab="Car Weight ", ylab="Miles Per Gallon ", pch=19)
(Pour vous entraîner à réaliser un simple nuage de points, essayez cet exemple interactif de DataCamp).
La fonction scatterplot( )
du package voiture offre de nombreuses fonctionnalités améliorées, notamment des lignes d'ajustement, des diagrammes en boîte marginaux, le conditionnement sur un facteur et l'identification interactive des points. Chacune de ces caractéristiques est optionnelle.
# Enhanced Scatterplot of MPG vs. Weight
#by Number of Car Cylinders
library(car)
scatterplot(mpg ~ wt | cyl, data=mtcars,
xlab="Weight of Car", ylab="Miles Per Gallon",
main="Enhanced Scatter Plot",
labels=row.names(mtcars))
Matrices de nuage de points
Il existe au moins 4 fonctions utiles pour créer des matrices de nuage de points. Les analystes doivent aimer les matrices de nuage de points !
# Basic Scatterplot Matrix
pairs(~mpg+disp+drat+wt,data=mtcars,
main="Simple Scatterplot Matrix")
Le package lattice propose des options permettant de conditionner la matrice du nuage de points à un facteur.
# Scatterplot Matrices from the lattice Package
library(lattice)
splom(mtcars[c(1,3,5,6)], groups=cyl, data=mtcars,
panel=panel.superpose,
key=list(title="Three Cylinder Options",
columns=3,
points=list(pch=super.sym$pch[1:3],
col=super.sym$col[1:3]),
text=list(c("4 Cylinder","6 Cylinder","8 Cylinder"))))
Le package car peut conditionner la matrice du nuage de points à un facteur, et inclure éventuellement des lignes de lowess et de meilleur ajustement linéaire, ainsi que des boxplot, des densités ou des histogrammes dans la diagonale principale, ainsi que des diagrammes de tapis dans les marges des cellules.
# Scatterplot Matrices from the car Package
library(car)
scatterplot.matrix(~mpg+disp+drat+wt|cyl, data=mtcars,
main="Three Cylinder Options")
Le logiciel gclus propose des options permettant de réorganiser les variables de manière à ce que celles qui présentent des corrélations plus élevées soient plus proches de la diagonale principale. Il peut également coder les cellules en couleur pour refléter l'importance des corrélations.
# Scatterplot Matrices from the glus Package
library(gclus)
dta <- mtcars[c(1,3,5,6)] # get data
dta.r <- abs(cor(dta)) # get correlations
dta.col <- dmat.color(dta.r) # get colors
# reorder variables so those with highest correlation
# are closest to the diagonal
dta.o <- order.single(dta.r)
cpairs(dta, dta.o, panel.colors=dta.col, gap=.5,
main="Variables Ordered and Colored by Correlation"
)
Diagrammes de dispersion à haute densité
Lorsque les points de données sont nombreux et se chevauchent de manière significative, les diagrammes de dispersion perdent de leur utilité. Plusieurs approches peuvent être utilisées dans ce cas. La fonction hexbin(x, y)
du paquet hexbin permet de répartir les données bivariées dans des cellules hexagonales (c'est plus beau qu'il n'y paraît).
# High Density Scatterplot with Binning
library(hexbin)
x <- rnorm(1000)
y <- rnorm(1000)
bin<-hexbin(x, y, xbins=50)
plot(bin, main="Hexagonal Binning")
Une autre option pour un nuage de points avec un chevauchement important de points est le nuage de tournesol. Voir help(sunflowerplot) pour plus de détails.
Enfin, vous pouvez enregistrer le nuage de points au format PDF et utiliser la transparence des couleurs pour faire apparaître les points qui se chevauchent (cette idée vient de B.S. Everrit en HSAUR).
# High Density Scatterplot with Color Transparency
pdf("c:/scatterplot.pdf")
x <- rnorm(1000)
y <- rnorm(1000)
plot(x,y, main="PDF Scatterplot Example", col=rgb(0,100,0,50,maxColorValue=255), pch=16)
dev.off()
Note : Vous pouvez utiliser la fonction col2rgb( )
pour obtenir les valeurs rbg des couleurs R. Par exemple, col2rgb("darkgreen")
donne r=0, g=100, b=0. Ajoutez ensuite le niveau de transparence alpha en tant que quatrième chiffre du vecteur de couleur. Une valeur de zéro signifie que la transparence est totale. Voir help(rgb) pour plus d'informations.
Diagrammes de dispersion en 3D
Vous pouvez créer un nuage de points en 3D avec le package scatterplot3d. Utilisez la fonction scatterplot3d(x , y , z)
.
# 3D Scatterplot
library(scatterplot3d)
attach(mtcars)
scatterplot3d(wt,disp,mpg, main="3D Scatterplot")
# 3D Scatterplot with Coloring and Vertical Drop Lines
library(scatterplot3d)
attach(mtcars)
scatterplot3d(wt,disp,mpg, pch=16, highlight.3d=TRUE,
type="h", main="3D Scatterplot")
# 3D Scatterplot with Coloring and Vertical Lines
# and Regression Plane
library(scatterplot3d)
attach(mtcars)
s3d <-scatterplot3d(wt,disp,mpg, pch=16, highlight.3d=TRUE,
type="h", main="3D Scatterplot")
fit <- lm(mpg ~ wt+disp)
s3d$plane3d(fit)
Diagrammes de dispersion 3D en rotation
Vous pouvez également créer un nuage de points interactif en 3D à l'aide de la fonction plot3D(x , y , z)
du package rgl. Il crée un nuage de points en 3D qui peut être tourné à l'aide de la souris. Les trois premiers arguments sont les vecteurs numériques x
, y
, et z
représentant les points. col=
et size=
contrôlent respectivement la couleur et la taille des points.
# Spinning 3d Scatterplot
library(rgl)
plot3d(wt, disp, mpg, col="red", size=3)
Vous pouvez réaliser une fonction similaire avec le site scatter3d(x , y , z)
du paquet Rcmdr.
# Another Spinning 3d Scatterplot
library(Rcmdr)
attach(mtcars)
scatter3d(wt, disp, mpg)
Pratiquer
Essayez les exercices de création de diagrammes de dispersion dans ce cours sur la visualisation de données en R.
Ce contenu est extrait de statmethods.net.