Accéder au contenu principal
Documents
Partager
LinkedIn
Facebook
Twitter
Copy
R DocumentationEntrée de données en RGestion des données en RGraphiques en RR InterfaceStatistiques en R

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).

Diagramme de dispersion 689x689/public

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))
Scatterplot3 689x689/public

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")

spmatrix1 689x689/public

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"))))

spmatrix2 689x689/public

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")

spmatrix3 689x689/public

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"
)

Matrice éparse 4/public

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")

Hexbin (1)/public

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()

Alpha Scatter/public

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")

S3D1 689x689/public

# 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")

S3D2 689x689/public

# 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)

S3D3 689x689/public

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)

Plot3D 339x409/public

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)

Diagramme de dispersion en 3D/public

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.