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 87965 fois