library(ggplot2)
ggplot(ToothGrowth, aes(x = len)) +
geom_histogram(fill = "#3a86d4", alpha = 0.7) +
labs(x = "Tooth length", y = "Count") +
theme_minimal()
Tracer, regrouper en classes et grouper un histogramme ggplot2 — en direct dans votre navigateur
Apprenez à construire un histogramme en R avec ggplot2 — tracez-le avec geom_histogram(), maîtrisez les classes, ajoutez une ligne de moyenne et une courbe de densité, et comparez des groupes. Modifiez et exécutez le code en direct, sans aucune installation.
20 juin 2026
8 juillet 2026
x, puis tracez avec geom_histogram().binwidth (ou bins) — car les 30 classes par défaut racontent rarement la bonne histoire.fill colore l’intérieur de la barre, colour son contour ; réglez-les indépendamment.geom_vline() à la moyenne, ou passez l’axe des y en densité (after_stat(density)) et superposez une courbe geom_density().fill, avec une palette adaptée au daltonisme (scale_fill_viridis_d()).position = "identity" avec alpha (semi-transparence) ; "dodge" et "stack" sont les autres dispositions.Un histogramme est le moyen le plus rapide de voir la forme d’une seule variable numérique : où se regroupent les valeurs, si la distribution est asymétrique, et s’il existe plusieurs pics. En R, ggplot2 en trace un avec une seule couche — geom_histogram() — et rend facile la maîtrise des classes, l’ajout d’une ligne de moyenne, la superposition d’une courbe de densité et la comparaison de groupes. Cette leçon en construit un pas à pas ; les figures sont rendues ici même, et vous pouvez réexécuter ou modifier n’importe laquelle d’entre elles en direct.
Nous utilisons le jeu de données intégré ToothGrowth : la longueur des cellules odontoblastes (len) chez des cobayes recevant de la vitamine C à trois doses (dose : 0,5, 1 ou 2 mg/jour) selon deux modes d’administration (supp : jus d’orange OJ ou acide ascorbique VC). L’histogramme montre comment les valeurs de len sont distribuées.
Associez len à l’axe des x et ajoutez une seule couche d’histogramme. ggplot2 compte les observations dans des classes et trace une barre par classe.

Lorsque vous exécutez ceci, vous verrez un message : « stat_bin() using bins = 30. » C’est ggplot2 qui vous avertit qu’il a choisi les classes à votre place — et 30 n’est presque jamais le bon nombre. La section suivante corrige cela.
Le choix le plus important d’un histogramme est la taille des classes. Réglez-la explicitement avec binwidth (la largeur de chaque barre, dans les unités de votre variable) ou bins (le nombre de barres à répartir sur l’étendue des valeurs). Trop large, vous brouillez la forme ; trop étroit, vous voyez du bruit. Réglez-en toujours un — ne livrez jamais le réglage silencieux des 30 classes par défaut.

Vous préférez un nombre fixe de barres ? Passez bins plutôt que binwidth :
Deux attributs esthétiques contrôlent la couleur d’une barre : fill colore l’intérieur, colour le contour. Réglez- les indépendamment — un contour contrasté rend les barres voisines plus faciles à distinguer. Pour des palettes personnalisées, ColorBrewer ou en niveaux de gris par groupe, consultez le guide des couleurs ggplot2.
Une ligne de référence verticale à la moyenne ancre la distribution. Ajoutez-la avec geom_vline(), en pointant xintercept vers mean(len).
Par défaut, l’axe des y est un effectif. Pour superposer une courbe de densité lisse, placez d’abord l’histogramme sur la même échelle en associant l’axe des y à la densité avec after_stat(density), puis ajoutez geom_density(). (after_stat() est le remplaçant moderne de l’ancien raccourci ..density...) Pour la courbe de densité comme graphique à part entière, consultez la leçon sur le graphique de densité.
Pour comparer des distributions entre groupes, associez la variable de groupement à fill. Utilisez une palette viridis adaptée au daltonisme afin que la figure reste lisible pour tout le monde, en couleur comme à l’impression.
Lorsque des barres de groupes différents tombent dans la même classe, l’ajustement de position décide de leur disposition. "identity" les superpose (associez-le à alpha, ci-dessous), "dodge" les juxtapose côte à côte, et "stack" (le réglage par défaut) les empile les unes sur les autres.
Avec position = "identity", les histogrammes des groupes se superposent, donc réglez alpha en dessous de 1 pour voir à travers le chevauchement. C’est la façon la plus nette de comparer deux distributions sur le même axe.
Pour marquer la moyenne de chaque groupe, résumez d’abord les moyennes dans un petit tableau de données, puis passez-le à geom_vline(). Associer colour au groupe à l’intérieur de cette couche garde les lignes en accord avec les remplissages.
library(ggplot2)
group_means <- aggregate(len ~ supp, data = ToothGrowth, FUN = mean)
ggplot(ToothGrowth, aes(x = len, fill = supp)) +
geom_histogram(binwidth = 3, position = "identity", alpha = 0.5) +
geom_vline(data = group_means,
aes(xintercept = len, colour = supp),
linetype = "dashed", linewidth = 1) +
scale_fill_viridis_d() +
scale_colour_viridis_d() +
labs(x = "Tooth length", y = "Count", fill = "Supplement", colour = "Supplement") +
theme_minimal()
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 d’histogramme matplotlib arrive dans la série Python.
Demandez à Prova « quelle binwidth montre le mieux la forme de len dans ce jeu de données ? » — elle répond avec du code que vous pouvez exécuter, de sorte que l’explication est reproductible. The runtime is the judge. Ask Prova →
Passez soit binwidth (la largeur de chaque barre dans les unités de votre variable, par exemple geom_histogram(binwidth = 3)), soit bins (un nombre de barres fixe, par exemple geom_histogram(bins = 15)). Réglez-en toujours un vous-même — le réglage silencieux par défaut de 30 classes raconte rarement la bonne histoire.
stat_bin() using bins = 30 » ?
Ce message signifie que vous avez tracé geom_histogram() sans choisir de taille de classe, donc ggplot2 a choisi 30 classes à votre place. C’est une invitation à régler explicitement binwidth ou bins, plutôt qu’une véritable erreur.
fill et colour dans un histogramme ?
fill colore l’intérieur de la barre tandis que colour trace son contour — ils sont indépendants, par exemple geom_histogram(fill = "#3a86d4", colour = "grey30"). Un contour contrasté rend les barres voisines plus faciles à distinguer.
Ajoutez une couche geom_vline() avec xintercept réglé sur la moyenne, par exemple geom_vline(xintercept = mean(ToothGrowth$len), linetype = "dashed"). Pour une ligne par groupe, résumez d’abord les moyennes avec aggregate() et associez colour au groupe à l’intérieur de geom_vline().
Associez la variable de groupement à fill et utilisez position = "identity" avec alpha en dessous de 1 pour que les barres qui se chevauchent restent visibles, par exemple geom_histogram(position = "identity", alpha = 0.5). Utilisez position = "dodge" pour juxtaposer les barres côte à côte ou "stack" pour les empiler.
Complétez le code pour que l’histogramme utilise un axe des y en densité et qu’une courbe de densité lisse soit tracée par-dessus.
library(ggplot2)
ggplot(ToothGrowth, aes(x = len, y = after_stat(density))) +
geom_histogram(binwidth = 3, fill = "#3a86d4", alpha = 0.7) +
geom_density(colour = "#1b3a5b", linewidth = 1)
Vous avez construit un histogramme ggplot2, pris le contrôle des classes, réglé les couleurs du contour et du remplissage, ajouté une ligne de moyenne, basculé vers un axe des y en densité avec une courbe de densité superposée, comparé des groupes par fill, et disposé des barres groupées avec position. Ensuite, explorez la boîte à moustaches pour une comparaison de groupes compacte, et le reste de la grammaire ggplot2.
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 = {Histogramme en R : guide ggplot2},
date = {2026-06-20},
url = {https://www.datanovia.com/learn/data-visualization/ggplot2/histogram},
langid = {fr}
}