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!
Recommended for You!
Click to follow us on Facebook:
Comment this article by clicking on "Discussion" button (top-right position of this page)