Combinaison de tracés dans R
R permet de combiner facilement plusieurs graphiques en un seul, en utilisant les fonctions thepar( )
ou layout( )
.
Avec la fonction par( )
, vous pouvez inclure l'option mfrow=c(nrows, ncols)
pour créer une matrice de tracés nrows x ncols qui sont remplis par ligne. mfcol=c(nrows, ncols)
remplit la matrice par colonne.
# 4 figures arranged in 2 rows and 2 columns
attach(mtcars)
par(mfrow=c(2,2))
plot(wt,mpg, main="Scatterplot of wt vs. mpg")
plot(wt,disp, main="Scatterplot of wt vs disp")
hist(wt, main="Histogram of wt")
boxplot(wt, main="Boxplot of wt")
# 3 figures arranged in 3 rows and 1 column
attach(mtcars)
par(mfrow=c(3,1))
hist(wt)
hist(mpg)
hist(disp)
La fonction layout( )
se présente sous la forme layout(mat)
où mat
est un objet matriciel spécifiant l'emplacement des N figures à tracer.
# One figure in row 1 and two figures in row 2
attach(mtcars)
layout(matrix(c(1,1,2,3), 2, 2, byrow = TRUE))
hist(wt)
hist(mpg)
hist(disp)
En option, vous pouvez inclure des options widths= et heights= dans la fonction layout( )
pour contrôler plus précisément la taille de chaque figure. Ces options ont la forme suivante :
- widths= un vecteur de valeurs pour la largeur des colonnes
- heights= un vecteur de valeurs pour les hauteurs des lignes
Les largeurs relatives sont spécifiées par des valeurs numériques. Les largeurs absolues (en centimètres) sont spécifiées avec la fonction lcm()
.
# One figure in row 1 and two figures in row 2
# row 1 is 1/3 the height of row 2
# column 2 is 1/4 the width of the column 1
attach(mtcars)
layout(matrix(c(1,1,2,3), 2, 2, byrow = TRUE),
widths=c(3,1), heights=c(1,2))
hist(wt)
hist(mpg)
hist(disp)
Voir help(layout)
pour plus de détails.
Création d'un arrangement de figures avec un contrôle précis
Dans l'exemple suivant, deux diagrammes en boîte sont ajoutés au nuage de points pour créer un graphique amélioré.
# Add boxplots to a scatterplot
par(fig=c(0,0.8,0,0.8), new=TRUE)
plot(mtcars$wt, mtcars$mpg, xlab="Car Weight",
ylab="Miles Per Gallon")
par(fig=c(0,0.8,0.55,1), new=TRUE)
boxplot(mtcars$wt, horizontal=TRUE, axes=FALSE)
par(fig=c(0.65,1,0,0.8),new=TRUE)
boxplot(mtcars$mpg, axes=FALSE)
mtext("Enhanced Scatterplot", side=3, outer=TRUE, line=-3)
Pour comprendre ce graphique, considérez que la zone complète du graphique va de (0,0) dans le coin inférieur gauche à (1,1) dans le coin supérieur droit. Le format du paramètre fig=
est un vecteur numérique de la forme c(x1, x2, y1, y2). Le premier site fig=
établit un nuage de points allant de 0 à 0,8 sur l'axe des x et de 0 à 0,8 sur l'axe des y. Le diagramme en boîte du haut va de 0 à 0,8 sur l'axe des x et de 0,55 à 1 sur l'axe des y. J'ai choisi 0,55 plutôt que 0,8 pour que la figure du haut soit plus proche du diagramme de dispersion. Le diagramme en boîte de droite va de 0,65 à 1 sur l'axe des x et de 0 à 0,8 sur l'axe des y. Là encore, j'ai choisi une valeur qui rapproche le diagramme de droite du diagramme de dispersion. Vous devez expérimenter pour trouver la bonne solution.
fig=
démarre une nouvelle parcelle, donc pour ajouter à une parcelle existante, utilisez new=TRUE
.
Vous pouvez utiliser cette fonction pour combiner plusieurs tracés dans n'importe quelle disposition en un seul graphique.
Pratiquer
Essayez gratuitement le premier chapitre de ce cours interactif sur la visualisation de données, qui traite de la combinaison de graphiques.
Ce contenu est extrait de statmethods.net.