Visualisation des Données à l'Aide de GGPlot2

GGPlot Barplot

Le barplot (aussi connu sous le nom de diagramme à barres ou de graphique en colonnes) est utilisé pour montrer des comparaisons numériques discrètes entre des catégories. L’un des axes du graphique montre les catégories spécifiques comparées et l’autre axe représente une échelle de valeurs discrètes.

Cet article décrit comment créer un barplot en utilisant le package ggplot2 R.

Vous apprendrez à:

  • Créer des barplots de base et des barplots groupés
  • Ajouter des étiquettes à un barplot
  • Changer la couleur des traits et de remplissage des barres par groupe


Sommaire:

Livre Apparenté

GGPLOT2 - L’Essentiel pour une Visualisation Magnifique des Données dans R

Fonctions R clés

  • Fonction clé : geom_col() pour créer des bar plots. Les hauteurs des barres représentent les valeurs dans les données.
  • Arguments clés pour personnaliser le graphique:
    • color, fill : couleur de bordure et de remplissage des barres
    • width: largeur de barre

Préparation des données

Nous allons créer deux data frames dérivées du jeu de données ToothGrowth.

df <- data.frame(dose=c("D0.5", "D1", "D2"),
                len=c(4.2, 10, 29.5))

head(df)
##   dose  len
## 1 D0.5  4.2
## 2   D1 10.0
## 3   D2 29.5
df2 <- data.frame(supp=rep(c("VC", "OJ"), each=3),
                dose=rep(c("D0.5", "D1", "D2"),2),
                len=c(6.8, 15, 33, 4.2, 10, 29.5))

head(df2)
##   supp dose  len
## 1   VC D0.5  6.8
## 2   VC   D1 15.0
## 3   VC   D2 33.0
## 4   OJ D0.5  4.2
## 5   OJ   D1 10.0
## 6   OJ   D2 29.5
  • len: Longueur des dents
  • dose: Dose en milligrammes (0,5, 1, 2)
  • supp: Type de supplément (VC ou OJ)

Chargement des packages R requis

Chargez le package ggplot2 et mettez le thème par défaut à theme_classic() avec la légende en haut du graphique:

library(ggplot2)
theme_set(
  theme_classic() +
    theme(legend.position = "top")
  )

Barplots de base

Nous commençons par créer un barplot simple (nommé f) en utilisant le jeu de données df:

f <- ggplot(df, aes(x = dose, y = len))
# Bar plot basique
f + geom_col()

# Changer la couleur de remplissage et ajouter les étiquettes en haut (vjust = -0.3)
f + geom_col(fill = "#0073C2FF") +
  geom_text(aes(label = len), vjust = -0.3)
   
# Etiquette à l'intérieur des barres, vjust = 1,6
f + geom_col(fill = "#0073C2FF")+
  geom_text(aes(label = len), vjust = 1.6, color = "white")

Notez qu’il est possible de changer la largeur des barres en utilisant l’argument width (ex. : width = 0.5)

Changer les couleurs des bar plots par groupes

Nous allons changer la couleur des traits et le remplissage des barres par groupe en fonction de la variable dose. Pour définir une palette de couleur personnalisée, la fonction scale_color_manual() est utilisée.

# Changer la couleur des lignes du barplot par groupes
f + geom_col(aes(color = dose), fill = "white") +
  scale_color_manual(values = c("#00AFBB", "#E7B800", "#FC4E07"))

# Changer les couleurs de remplissage du barplot par groupes
f + geom_col(aes(fill = dose)) +
  scale_fill_manual(values = c("#00AFBB", "#E7B800", "#FC4E07"))

Barplots avec plusieurs groupes

Créez des histogrammes empilés et decalés. Utilisez les fonctions scale_color_manual() et scale_fill_manual() pour définir manuellement les couleurs des bordures et des zones de remplissage.

# Bar plot empilés de y = counts par x = cut,
# coloré par la variable
ggplot(df2, aes(x = dose, y = len)) +
  geom_col(aes(color = supp, fill = supp), position = position_stack()) +
  scale_color_manual(values = c("#0073C2FF", "#EFC000FF"))+
  scale_fill_manual(values = c("#0073C2FF", "#EFC000FF"))

# Utiliser position = position_dodge() 
p <- ggplot(df2, aes(x = dose, y = len)) +
  geom_col(aes(color = supp, fill = supp), position = position_dodge(0.8), width = 0.7) +
  scale_color_manual(values = c("#0073C2FF", "#EFC000FF"))+
  scale_fill_manual(values = c("#0073C2FF", "#EFC000FF"))
p

Notez que, position_stack() empile automatiquement les valeurs dans l’ordre inverse des groupes. Cette valeur par défaut garantit que les couleurs des barres s’alignent avec la légende par défaut. Vous pouvez modifier ce comportement en utilisant position = position_stack(reverse = TRUE).

Ajoutez des étiquettes sur des barres decalées :

p + geom_text(
  aes(label = len, group = supp), 
  position = position_dodge(0.8),
  vjust = -0.3, size = 3.5
)

Ajout d’étiquettes à un diagramme à barres empilées. 4 étapes nécessaires pour calculer la position des étiquettes de texte:

  • Regrouper les données en fonction de la variable dose
  • Trier les données par colonnes dose et supp. Comme position_stack() inverse l’ordre des groupes, la colonne supp doit être triée par ordre décroissant.
  • Calculez la somme cumulée de len pour chaque catégorie de “dose”. Utilisé comme coordonnées y des étiquettes. Pour placer l’étiquette au milieu des barres, nous allons utiliser cumsum(len) - 0.5 * len.
  • Créer le bar plot et ajouter des étiquettes
# Organiser/trier et calculer les sommes cumulatives
library(dplyr)
 df2 <- df2 %>%
  group_by(dose) %>%
  arrange(dose, desc(supp)) %>%
  mutate(lab_ypos = cumsum(len) - 0.5 * len) 
df2
## # A tibble: 6 x 4
## # Groups:   dose [3]
##   supp  dose    len lab_ypos
##   <fct> <fct> <dbl>    <dbl>
## 1 VC    D0.5    6.8      3.4
## 2 OJ    D0.5    4.2      8.9
## 3 VC    D1     15        7.5
## 4 OJ    D1     10       20  
## 5 VC    D2     33       16.5
## 6 OJ    D2     29.5     47.8
# Créer des barplots empilés avec des étiquettes
ggplot(data = df2, aes(x = dose, y = len)) +
  geom_col(aes(fill = supp), width = 0.7)+
  geom_text(aes(y = lab_ypos, label = len, group =supp), color = "white") +
  scale_color_manual(values = c("#0073C2FF", "#EFC000FF"))+
  scale_fill_manual(values = c("#0073C2FF", "#EFC000FF"))

Conclusion

Cet article décrit comment créer et personnaliser un bar plot à l’aide du package ggplot2 R.



Version: English

GGPLOT Line Plot (Prev Lesson)
(Next Lesson) GGPLOT Barres d’Erreur
Back to Visualisation des Données à l’Aide de GGPlot2

No Comments

Give a comment

Want to post an issue with R? If yes, please make sure you have read this: How to Include Reproducible R Script Examples in Datanovia Comments

Teacher
Alboukadel Kassambara
Role : Fondateur de Datanovia
Read More