ggplot2 facet : diviser un graphique en plusieurs panneaux - Logiciel R et visualisation de données
La technique facet partitionne un graphique en une matrice de panneaux. Chaque panneau montre une partie des données. Ce tutoriel R décrit comment partitionner un graphique en utilisant le package ggplot2.
Il existe deux fonctions principales pour le partitionnement :
- facet_grid()
- facet_wrap()
Données
Le jeu de données ToothGrowth est utilisé dans les exemples ci-dessous :
# Convertir la variable dose de type "numeric" au type "factor"
ToothGrowth$dose <- as.factor(ToothGrowth$dose)
df <- ToothGrowth
head(df)
## len supp dose
## 1 4.2 VC 0.5
## 2 11.5 VC 0.5
## 3 7.3 VC 0.5
## 4 5.8 VC 0.5
## 5 6.4 VC 0.5
## 6 10.0 VC 0.5
Assurez-vous que la variable dose soit convertie en une variable de type “factor” en utilisant le script de R ci-dessus.
Box plot basique
Créer un box plot basique coloré par groupes :
library(ggplot2)
bp <- ggplot(df, aes(x=dose, y=len, group=dose)) +
geom_boxplot(aes(fill=dose))
bp
Partitionner avec une variable
Le graphe est partitionné en plusieurs panneaux en fonction des niveaux du groupe “supp”:
# Partitionnement vertical
bp + facet_grid(supp ~ .)
# Partitionnement horizontal
bp + facet_grid(. ~ supp)
Partitionner avec deux variables
Le graphe est partitionné en fonction des niveaux des groupes “dose” et “supp” :
# Facet avec deux variables: dose et supp.
# Les lignes sont "dose" et les colonnes sont "supp"
bp + facet_grid(dose ~ supp)
# Facet avec deux variables: inverser l'ordre des 2 variables
# Les lignes sont "supp" et les colonnes sont "dose"
bp + facet_grid(supp ~ dose)
Notez que, vous pouvez utiliser l’argument margins pour ajouter un panneau additionnel (all) contenant toutes les données pour chacune des variables utilisées pour le partitionnement.
bp + facet_grid(dose ~ supp, margins=TRUE)
Echelles des panneaux
Par défaut, tous les panneaux ont les mêmes échelles (scales=“fixed”). Elles peuvent être indépendantes en utilisant les valeurs suivantes pour l’argument scales : “free”, “free_x”" ou “free_y”.
bp + facet_grid(dose ~ supp, scales='free')
Comme vous pouvez le constater sur le graphique ci-dessus, les axes y des différents panneaux ont des échelles différentes.
Etiquettes des panneaux
L’argument labeller peut être utilisé pour contrôler les étiquettes des panneaux:
bp + facet_grid(dose ~ supp, labeller=label_both)
L’apparence des étiquettes des panneaux peut être modifiée comme suit:
# Modifier le texte. Valeurs possibles pour le style de police:
#'plain', 'italic', 'bold', 'bold.italic'.
bp + facet_grid(dose ~ supp)+
theme(strip.text.x = element_text(size=12, color="red",
face="bold.italic"),
strip.text.y = element_text(size=12, color="red",
face="bold.italic"))
# Modifier l'apparence du rectangle autour
# des étiquettes de panneaux
bp + facet_grid(dose ~ supp)+
theme(strip.background = element_rect(colour="black", fill="white",
size=1.5, linetype="solid"))
facet_wrap
Les panneaux peuvent être placés côte-à-côte en utilisant la fonction facet_wrap() comme suit :
bp + facet_wrap(~ dose)
bp + facet_wrap(~ dose, ncol=2)
Infos
Cette analyse a été réalisée avec le logiciel R (ver. 3.1.2) et le package ggplot2 (ver. 1.0.0)
Show me some love with the like buttons below... Thank you and please don't forget to share and comment below!!
Montrez-moi un peu d'amour avec les like ci-dessous ... Merci et n'oubliez pas, s'il vous plaît, de partager et de commenter ci-dessous!