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 RFonctions 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 barreswidth
: 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 dentsdose
: 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
etsupp
. Commeposition_stack()
inverse l’ordre des groupes, la colonnesupp
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 utilisercumsum(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
No Comments