library(ggplot2)
ggplot(ToothGrowth, aes(x = factor(dose), y = len)) +
geom_dotplot(binaxis = "y", stackdir = "center", fill = "#3a86d4") +
labs(x = "Dose (mg/day)", y = "Tooth length") +
theme_minimal()
Dessinez, résumez et groupez un dot plot ggplot2 — en direct dans votre navigateur
Apprenez à construire un dot plot dans R avec ggplot2 — dessinez-le avec geom_dotplot(), ajoutez des résumés de moyenne et de médiane, combinez-le avec des boîtes à moustaches et des graphiques en violon, et comparez des groupes. Modifiez et exécutez le code en direct, sans rien installer.
20 juin 2026
7 juillet 2026
x et les valeurs sur y, puis vous dessinez avec geom_dotplot(binaxis = "y", stackdir = "center").dotsize (rayon) et stackratio (espacement entre les points empilés).stat_summary(), et montrez la dispersion avec mean_sdl sous forme de barre transversale ou d’intervalle de points.scale_fill_viridis_d()) ; ajoutez une seconde variable avec position_dodge() pour comparer les groupes côte à côte.Un dot plot est la façon la plus honnête de montrer une petite distribution : au lieu de résumer les données en une boîte, il dessine un point par observation et les empile, de sorte que le lecteur voit chaque valeur et la forme qu’elles dessinent. Dans R, ggplot2 en dessine un avec une seule couche — geom_dotplot() — et facilite l’ajout de statistiques résumées et la combinaison avec des boîtes à moustaches ou des graphiques en violon. Cette leçon en construit un étape par étape ; les figures sont rendues ici même, et vous pouvez réexécuter ou modifier chacune d’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) via deux méthodes d’administration (supp : jus d’orange OJ ou acide ascorbique VC).
Mappez dose sur l’axe des x et len sur l’axe des y. Définissez binaxis = "y" pour que les points soient regroupés le long de l’axe des valeurs, et stackdir = "center" pour que les points de chaque groupe s’empilent symétriquement en une colonne. Comme dose est stockée sous forme de nombre, enveloppez-la dans factor() pour que ggplot2 dessine une colonne par groupe.
Deux arguments ajustent l’allure des points. dotsize met à l’échelle le rayon du point (relativement à la largeur de la classe), et stackratio définit l’espacement vertical entre les points empilés — des valeurs inférieures à 1 les resserrent, supérieures à 1 les écartent.
Les points montrent les données brutes ; ajoutez un marqueur pour le centre. Superposez stat_summary() avec fun = mean (ou fun = median) pour déposer un seul point sur chaque colonne — utile lorsque vous voulez la valeur typique d’un coup d’œil.
Pour montrer la dispersion en plus du centre, résumez chaque groupe par la moyenne ± écart-type. stat_summary() avec fun.data = mean_sdl (et fun.args = list(mult = 1) pour ±1 écart-type) renvoie la moyenne et ses bornes ; dessinez-les sous forme de crossbar ou de pointrange.
library(ggplot2)
ggplot(ToothGrowth, aes(x = factor(dose), y = len)) +
geom_dotplot(binaxis = "y", stackdir = "center", fill = "#3a86d4", alpha = 0.6) +
stat_summary(
fun.data = mean_sdl, fun.args = list(mult = 1),
geom = "crossbar", width = 0.5, colour = "grey30"
) +
labs(x = "Dose (mg/day)", y = "Tooth length") +
theme_minimal()
Un dot plot s’associe naturellement à une boîte à moustaches : la boîte donne la médiane et les quartiles, les points montrent chaque observation derrière elle. Dessinez d’abord la boîte (avec outlier.shape = NA pour que les points ne soient pas dessinés deux fois), puis empilez les points par-dessus. Ajoutez notch = TRUE pour un test visuel approximatif permettant de voir si les médianes diffèrent — voir la leçon sur la boîte à moustaches pour en savoir plus.
Remplacez la boîte par un violon pour montrer la forme complète de la densité derrière les points. Dessinez d’abord geom_violin(), puis les points par-dessus — les points prouvent combien d’observations se trouvent à l’intérieur de chaque courbe. Voir la leçon sur le graphique en violon pour les détails sur la densité.
Pour colorer chaque colonne selon son groupe, mappez la variable de groupement sur fill. Utilisez une palette adaptée au daltonisme comme viridis afin que la figure reste lisible pour tout le monde, en couleur ou à l’impression.
Mappez une seconde variable sur fill et décalez les colonnes pour comparer les groupes au sein de chaque dose. Définissez stackgroups = TRUE et passez position = position_dodge() pour que chaque supplément obtienne sa propre colonne, placée côte à côte.
library(ggplot2)
ggplot(ToothGrowth, aes(x = factor(dose), y = len, fill = supp)) +
geom_dotplot(
binaxis = "y", stackdir = "center",
stackgroups = TRUE, position = position_dodge(0.8),
dotsize = 0.7
) +
scale_fill_viridis_d() +
labs(x = "Dose (mg/day)", y = "Tooth length", fill = "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 de dot plot matplotlib/seaborn arrive dans la série Python.
Demandez à Prova « un dot plot ou une boîte à moustaches est-il le meilleur choix pour ces données ToothGrowth ? » — 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 →
Mappez votre groupe sur x et vos valeurs sur y, puis ajoutez geom_dotplot(binaxis = "y", stackdir = "center"). Définir binaxis = "y" regroupe les points le long de l’axe des valeurs et stackdir = "center" empile les points de chaque groupe en une colonne symétrique.
Ajustez les deux arguments d’apparence : dotsize met à l’échelle le rayon du point relativement à la largeur de la classe (utilisez une valeur inférieure à 1 pour les réduire), et stackratio définit l’espacement vertical entre les points empilés (en dessous de 1 les resserre, au-dessus de 1 les écarte).
Superposez stat_summary(fun = mean, geom = "point") par-dessus geom_dotplot() pour déposer un point sur chaque colonne ; remplacez par fun = median pour la médiane. Pour montrer aussi la dispersion, utilisez fun.data = mean_sdl avec fun.args = list(mult = 1) et geom = "crossbar" (ou "pointrange") pour la moyenne ± 1 écart-type.
Dessinez d’abord la couche de résumé, puis empilez les points par-dessus. Pour une boîte à moustaches, utilisez geom_boxplot(outlier.shape = NA) (afin que les points ne soient pas dessinés deux fois) suivi de geom_dotplot() ; pour un violon, utilisez geom_violin() puis geom_dotplot().
Mappez une seconde variable sur fill, puis dans geom_dotplot() définissez stackgroups = TRUE et position = position_dodge() pour que chaque groupe obtienne sa propre colonne placée côte à côte. Associez-y scale_fill_viridis_d() pour un remplissage adapté au daltonisme.
Complétez le code pour que chaque colonne de points affiche aussi la moyenne de son groupe sous la forme d’un point unique.
library(ggplot2)
ggplot(ToothGrowth, aes(x = factor(dose), y = len)) +
geom_dotplot(binaxis = "y", stackdir = "center", fill = "#3a86d4", alpha = 0.7) +
stat_summary(fun = mean, geom = "point", shape = 18, size = 5, colour = "red")
Vous avez construit un dot plot ggplot2, ajusté les points avec dotsize et stackratio, ajouté des résumés de moyenne et de moyenne ± écart-type, combiné les points avec des boîtes à moustaches et des graphiques en violon, coloré les colonnes par groupe avec une palette adaptée au daltonisme, et comparé les groupes côte à côte avec position_dodge(). Ensuite, explorez la boîte à moustaches et le graphique en violon pour des résumés de distribution compacts, 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 = {Dot plot dans R : un guide ggplot2},
date = {2026-06-20},
url = {https://www.datanovia.com/learn/data-visualization/ggplot2/dot-plot},
langid = {fr}
}