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

ggplot2 facet - Logiciel R et visualisation de donn?es

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)

ggplot2 facet - Logiciel R et visualisation de donn?esggplot2 facet - Logiciel R et visualisation de donn?es

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)

ggplot2 facet - Logiciel R et visualisation de donn?esggplot2 facet - Logiciel R et visualisation de donn?es

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)

ggplot2 facet - Logiciel R et visualisation de donn?es

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

ggplot2 facet - Logiciel R et visualisation de donn?es

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)

ggplot2 facet - Logiciel R et visualisation de donn?es

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

ggplot2 facet - Logiciel R et visualisation de donn?esggplot2 facet - Logiciel R et visualisation de donn?es

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)

ggplot2 facet - Logiciel R et visualisation de donn?esggplot2 facet - Logiciel R et visualisation de donn?es

Infos

Cette analyse a ?t? r?alis?e avec le logiciel R (ver. 3.1.2) et le package ggplot2 (ver. 1.0.0)


Enjoyed this article? I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Twitter, Facebook or Linked In.

Show me some love with the like buttons below... Thank you and please don't forget to share and comment below!!
Avez vous aimé cet article? Je vous serais très reconnaissant si vous aidiez à sa diffusion en l'envoyant par courriel à un ami ou en le partageant sur Twitter, Facebook ou Linked In.

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!





Cette page a été vue 13963 fois
Licence - Pas d?Utilisation Commerciale - Partage dans les M?mes Conditions
Licence Creative Commons