library(ggplot2)
ggplot(mpg, aes(x = class)) +
geom_bar(fill = "#3a86d4") +
labs(x = "Vehicle class", y = "Count") +
theme_minimal()
geom_bar()geom_col()Tracer, étiqueter et grouper un diagramme en barres ggplot2 — en direct dans votre navigateur
Apprenez à construire un diagramme en barres avec R et ggplot2 — barres d’effectifs avec geom_bar() ou de valeurs avec geom_col(), ajout d’étiquettes de valeurs, passage à l’horizontale, couleur par groupe, et comparaison de groupes en barres groupées ou empilées. Modifiez et exécutez le code en direct, sans aucune installation.
20 juin 2026
7 juillet 2026
geom_bar() compte les lignes par catégorie ; geom_col() trace des barres aux valeurs que vous fournissez.geom_text(), et passez à des barres horizontales avec coord_flip().fill — groupées (position = "dodge") ou empilées (le comportement par défaut).scale_fill_viridis_d() adaptée au daltonisme.Un diagramme en barres compare une valeur entre plusieurs catégories — l’outil de prédilection pour les effectifs, les totaux et les moyennes de groupe. En R, ggplot2 vous offre deux couches de barres, et choisir la bonne est tout l’enjeu :
geom_bar() compte pour vous les lignes de chaque catégorie (il utilise stat = "count").geom_col() trace une barre à la valeur que vous lui donnez (il utilise stat = "identity") — utilisez-le lorsque vous disposez déjà des nombres, comme des moyennes de groupe.Cette leçon couvre les deux, ainsi que les étiquettes, les couleurs et les barres groupées ; les figures sont rendues ici même, et vous pouvez réexécuter ou modifier chacune d’elles en direct.
geom_bar()Lorsque vous voulez savoir combien de lignes se trouvent dans chaque catégorie, associez la catégorie à x et laissez geom_bar() compter. Ici, le nombre de voitures par class dans le jeu de données intégré mpg.
geom_col()Lorsque vous disposez déjà des nombres — moyennes de groupe, totaux — utilisez geom_col(). Résumez d’abord les données ToothGrowth à la longueur moyenne des dents par dose, puis tracez une barre par dose.
Inscrivez le nombre sur chaque barre avec geom_text(). Décalez-le juste au-dessus de la barre avec vjust.
Les longues étiquettes de catégorie se lisent mieux à la verticale. Ajoutez coord_flip() pour basculer le graphique de côté.
Associez la variable de groupement à fill pour colorer chaque barre, en utilisant une palette viridis adaptée au daltonisme.
Associez une seconde variable à fill pour comparer des groupes au sein de chaque catégorie. Les barres s’empilent par défaut ; définissez position = "dodge" pour les placer côte à côte. Résumez d’abord selon dose et supp à la fois.
library(ggplot2)
tg2 <- aggregate(len ~ dose + supp, data = ToothGrowth, FUN = mean)
tg2$dose <- factor(tg2$dose)
ggplot(tg2, aes(x = dose, y = len, fill = supp)) +
geom_col(position = "dodge") +
scale_fill_viridis_d() +
labs(x = "Dose (mg/day)", y = "Mean tooth length", fill = "Supplement") +
theme_minimal()
Retirez position = "dodge" (ou définissez position = "stack") pour empiler les groupes à la place ; utilisez position = "fill" pour afficher les parts de chaque catégorie en proportions.
library(ggplot2)
tg2 <- aggregate(len ~ dose + supp, data = ToothGrowth, FUN = mean)
tg2$dose <- factor(tg2$dose)
ggplot(tg2, aes(x = dose, y = len, fill = supp)) +
geom_col(position = "stack") +
scale_fill_viridis_d() +
labs(x = "Dose (mg/day)", y = "Mean tooth length", fill = "Supplement") +
theme_minimal()
Vous voulez des barres d’erreur sur vos barres (écart-type, erreur standard, intervalles de confiance) ? C’est une courte leçon à part entière — Ajouter des barres d’erreur avec ggplot2 — à venir prochainement dans cette série.
Pour inscrire chaque valeur à l’intérieur de son segment, placez l’étiquette au point milieu du segment. ggplot2 empile du haut vers le bas : calculez donc, par dose, la somme cumulée de len moins la moitié de chaque valeur — l’étiquette tombe ainsi au centre de chaque bloc. En R de base, ave() applique cumsum() au sein de chaque groupe dose. Un piège : le texte blanc disparaît sur une barre claire. Adaptez la couleur de l’étiquette à son remplissage — texte foncé sur le segment clair (jaune), blanc sur le segment foncé (violet) — et passez-la par scale_colour_identity().
library(ggplot2)
tg2 <- aggregate(len ~ dose + supp, data = ToothGrowth, FUN = mean)
tg2$dose <- factor(tg2$dose)
# order so stacking (top-down) matches the cumulative sum
tg2 <- tg2[order(tg2$dose, rev(tg2$supp)), ]
# midpoint of each segment: running total within dose, minus half this value
tg2$ypos <- ave(tg2$len, tg2$dose, FUN = cumsum) - 0.5 * tg2$len
# readable label colour PER fill: dark on the light (yellow) VC bar, white on the dark (purple) OJ bar
tg2$lab_col <- ifelse(tg2$supp == "VC", "grey15", "white")
ggplot(tg2, aes(x = dose, y = len, fill = supp)) +
geom_col(position = "stack") +
geom_text(aes(y = ypos, label = round(len, 1), colour = lab_col), fontface = "bold") +
scale_fill_viridis_d() +
scale_colour_identity() +
labs(x = "Dose (mg/day)", y = "Mean tooth length", fill = "Supplement") +
theme_minimal()
Chaque segment porte désormais sa propre moyenne, centrée dans son bloc — bien plus facile à lire que de remonter les valeurs jusqu’à l’axe des y.
Les graphiques ci-dessus ont été rendus au moment de la construction. Envie d’expérimenter ? Modifiez le code et appuyez sur Run — il s’exécute dans votre navigateur via webR (sans serveur, sans installation).
Vous travaillez en Python ? Un guide de diagramme en barres avec matplotlib/seaborn arrive dans la série Python.
Demandez à Prova « dois-je utiliser geom_bar ou geom_col pour mes données ? » — elle répond avec du code que vous pouvez exécuter sur votre propre tableau de données, pour que le choix soit reproductible. The runtime is the judge. Ask Prova →
geom_bar() compte pour vous les lignes de chaque catégorie (il utilise stat = "count", vous n’associez donc que x), tandis que geom_col() trace une barre à la valeur que vous fournissez (il utilise stat = "identity", vous associez donc à la fois x et y). Utilisez geom_col() lorsque vous disposez déjà des nombres, comme des moyennes de groupe ou des totaux.
Ajoutez une couche geom_text() qui associe la valeur à label, par exemple geom_text(aes(label = round(len, 1)), vjust = -0.3). Le vjust négatif décale le texte juste au-dessus de chaque barre au lieu de le poser dessus.
Ajoutez coord_flip() pour intervertir les axes x et y, ce qui bascule le graphique de côté — pratique lorsque les étiquettes de catégorie sont longues et se chevauchent sur un axe vertical.
Associez votre seconde variable à fill, puis définissez position = "dodge" dans geom_col() (ou geom_bar()) pour placer les barres côte à côte. Les barres s’empilent par défaut (position = "stack") : le mode dodge est donc le choix explicite à activer pour des barres groupées.
Pour une couleur fixe unique, définissez fill en dehors de aes(), par exemple geom_col(fill = "#3a86d4"). Pour colorer les barres par groupe, associez la variable à l’intérieur de aes(fill = ...) et ajoutez une échelle telle que scale_fill_viridis_d(), adaptée au daltonisme.
Complétez le code afin que les deux suppléments apparaissent en barres côte à côte au sein de chaque dose (et non empilées).
library(ggplot2)
tg2 <- aggregate(len ~ dose + supp, data = ToothGrowth, FUN = mean)
tg2$dose <- factor(tg2$dose)
ggplot(tg2, aes(x = dose, y = len, fill = supp)) +
geom_col(position = "dodge")
Vous avez construit un diagramme en barres ggplot2 des deux façons — effectifs avec geom_bar() et valeurs avec geom_col() — ajouté des étiquettes, basculé à l’horizontale, coloré par groupe, et comparé des groupes avec des barres groupées et empilées. Ensuite, ajoutez des barres d’erreur pour montrer la variabilité, et comparez des distributions avec la boîte à moustaches et le graphique en violon.
Vous préférez un livre ? GGPlot2 Essentials est disponible en PDF téléchargeable — toutes les leçons de cette série, hors ligne et à vous.
Prouvez que vous savez le faire. Maîtrisez toute la série ggplot2 — suivez votre parcours, construisez des projets et obtenez un certificat.
Passez à Pro — Prova illimité sur vos propres données et un certificat vérifiable qui atteste la compétence.
dès 15 $/mois facturé annuellement
✓ Vous êtes Pro — continuez. The runtime is the judge.
Prêt à passer à la vitesse supérieure ?
Recevez les nouvelles leçons R & Python par e-mail
Pratique, reproductible, sans spam. Désinscription à tout moment.
Double opt-in. Nous ne partageons jamais votre e-mail.
Cette leçon est reproductible : les figures sont exécutées au moment de la construction (si elles s’affichent, le code fonctionne), et le bac à sable et le quiz se réexécutent en direct dans votre navigateur. The runtime is the judge.
@online{2026,
author = {},
title = {Diagramme en barres avec R : guide ggplot2},
date = {2026-06-20},
url = {https://www.datanovia.com/learn/data-visualization/ggplot2/barplot},
langid = {fr}
}