GGPLOT: Comment Créer des Bar Plots Empilés



GGPLOT: Comment Créer des Bar Plots Empilés

Ce tutoriel décrit comment créer des bar plots empilés avec ggplot2. Vous apprendrez également comment ajouter des étiquettes à un diagramme à barres empilées.



Sommaire:

Livre Apparenté

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

Prérequis

Charger les packages requis et définir la fonction thème theme_minimal() comme thème par défaut:

library(dplyr)   # Pour la manipulation des données
library(ggplot2) # Pour la visualisation des données
theme_set(theme_minimal())

Préparation des données

Les données dérivées du jeu de données “ToothGrowth” sont utilisées. ToothGrowth décrit l’effet de la vitamine C sur la croissance des dents chez les cobayes. On utilise trois doses de vitamine C (0,5, 1 et 2 mg) avec chacune des deux méthodes d’administration [jus d’orange (JO) ou acide ascorbique (VC)] :

df <- 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(df)
##   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)

Graphiques basiques

p <- ggplot(df, aes(x = dose, y = len))+
  geom_col(aes(fill = supp), width = 0.7)
p

Ajouter des étiquettes

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 le graphique empilé 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 <- df %>%
  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
p <- 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")
p

Bar plots personnalisés

Utilisez la fonction scale_fill_manual() pour définir manuellement les couleurs des lignes de bordure et les couleurs de remplissage des barres.

p + scale_fill_manual(values = c("#0073C2FF", "#EFC000FF"))



Version: English





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