library(ggpubr)
df <- ToothGrowth
df$dose <- factor(df$dose)
ggboxplot(df, x = "dose", y = "len",
color = "dose", palette = "jco",
add = "jitter",
xlab = "Dose (mg)", ylab = "Tooth length")
Des boîtes à moustaches et graphiques en violon prêts à publier en un seul appel — colorés par groupe, avec jitter, encoches et lignes de quantiles
Créez des boîtes à moustaches et des graphiques en violon prêts à publier en R avec ggpubr. Utilisez ggboxplot() pour les boîtes — colorées ou remplies par groupe, avec points jitterés, encoches, ordonnées ou horizontales — et ggviolin() pour les violons — avec une boîte à moustaches intérieure, des lignes de quantiles et un rognage. Chaque exemple est rendu pour vous et s’exécute en direct dans votre navigateur.
22 juin 2026
8 juillet 2026
ggboxplot() trace une boîte à moustaches prête pour la revue en un seul appel : colorez ou remplissez par groupe avec color =/fill = + une palette nommée ("jco", "npg", …).add = "jitter", comparez honnêtement les médianes avec des boîtes à encoche (notch = TRUE), et contrôlez l’ordre des groupes avec order =.rotate = TRUE — pratique quand les étiquettes de catégories sont longues.ggviolin() montre la forme complète de la distribution ; insérez une boîte à moustaches dedans avec add = "boxplot" et tracez les quartiles avec draw_quantiles = c(0.25, 0.5, 0.75).theme_pubr() automatiquement, si bien que les graphiques semblent prêts à publier d’emblée — vous n’ajoutez pas de thème.stat_compare_means() — voir la leçon Ajouter des p-values.Une boîte à moustaches est le cheval de bataille de la comparaison de groupes, et un graphique en violon en est la cousine sensible à la distribution. En R, le paquet ggpubr trace les deux en un seul appel — colorés par groupe, stylés pour la revue, prêts pour un panneau de figure — sans écrire à la main la grammaire en couches de ggplot2.
Deux fonctions suffisent :
ggboxplot() — une boîte à moustaches prête à publier. Colorez ou remplissez par groupe, ajoutez les points sous-jacents, mettez des encoches aux boîtes, ordonnez-les ou retournez-les.ggviolin() — un graphique en violon prêt à publier. Mêmes arguments, plus une boîte à moustaches à l’intérieur et des lignes de quantiles, pour voir la forme complète de la distribution de chaque groupe.Les deux appliquent automatiquement le theme_pubr() épuré de ggpubr, vous n’ajoutez donc pas de thème. Cette leçon parcourt tout le flux de travail canonique sur les données intégrées ToothGrowth — la longueur des dents len selon trois niveaux de dose et deux suppléments supp. Chaque figure est rendue ici même, et vous pouvez réexécuter ou modifier chacune d’elles en direct.
Vous voulez la grammaire sous-jacente —
geom_boxplot()/geom_violin()couche par couche ? Voir les leçons ggplot2 boîte à moustaches et graphique en violon. ggpubr est le raccourci de publication par-dessus les mêmes geoms.
Voici l’image que la plupart des gens recherchent : une boîte à moustaches de la longueur des dents par dose, avec une couleur différente par dose et les observations brutes jitterées par-dessus. x/y sont des noms de colonnes sous forme de chaînes, color mappe le contour à dose, palette = "jco" applique un jeu de couleurs de revue, et add = "jitter" superpose les points. Tout le reste de la leçon est une variation de ce seul appel.

Utilisez color pour teinter seulement le contour (comme ci-dessus) ou fill pour remplir la boîte. palette accepte les jeux de couleurs de revue nommés ("jco", "npg", "lancet", "aaas"), un nom Brewer, ou un vecteur de vos propres couleurs.
Une boîte à moustaches masque la taille d’échantillon et tout regroupement. add = "jitter" superpose les observations individuelles pour que le lecteur voie la dispersion réelle — fortement recommandé pour les petits échantillons typiques des expériences. Vous pouvez le combiner avec d’autres résumés ("mean_sd", "dotplot") et styliser les points (taille, couleur, transparence) via add.params.
Une encoche dessine une taille autour de la médiane ; si les encoches de deux boîtes ne se chevauchent pas, c’est une indication visuelle grossière que leurs médianes diffèrent. Activez-les avec notch = TRUE.

L’encoche est un guide visuel, pas un test formel. Pour une vraie p-value sur le graphique, superposez
stat_compare_means()— voir Ajouter des p-values.
Par défaut, les groupes suivent l’ordre des niveaux du facteur. Donnez à order un vecteur explicite pour les arranger comme l’histoire se lit le mieux — ici, la dose la plus grande en premier.
Quand les étiquettes de catégories sont longues, une disposition horizontale se lit mieux. Retournez le graphique avec rotate = TRUE — ggpubr échange les axes pour vous.
Une boîte à moustaches résume cinq nombres ; un graphique en violon trace la densité complète, si bien que les groupes bimodaux ou asymétriques sont évidents. ggviolin() prend les mêmes arguments que ggboxplot() — remplissez par groupe et appliquez une palette.
Le violon montre la forme mais masque la médiane et les quartiles. Insérez une petite boîte à moustaches à l’intérieur de chaque violon avec add = "boxplot" — la vue qui réunit le meilleur des deux. add.params stylise la boîte intérieure (ici, un remplissage blanc pour qu’elle ressorte sur le violon coloré).
Au lieu d’une boîte intérieure, vous pouvez marquer les quartiles directement sur le violon avec draw_quantiles = c(0.25, 0.5, 0.75). Par défaut, ggplot2 rogne chaque violon à l’étendue des données ; passez trim = FALSE pour laisser les queues de densité s’étendre au-delà du minimum et du maximum observés afin d’obtenir une silhouette plus lisse.
C’est sur les boîtes à moustaches et les violons que se lit la signification entre groupes ; ggpubr vous permet donc d’annoter le test dans le même pipeline : ajoutez stat_compare_means() pour tracer des crochets par paires et une p-value globale directement sur le graphique.
library(ggpubr)
df <- ToothGrowth
df$dose <- factor(df$dose)
my_comparisons <- list(c("0.5", "1"), c("1", "2"), c("0.5", "2"))
ggviolin(df, x = "dose", y = "len",
fill = "dose", palette = "jco",
add = "boxplot", add.params = list(fill = "white")) +
stat_compare_means(comparisons = my_comparisons, label = "p.signif") + # pairwise stars
stat_compare_means(label.y = 50) # global p-value
Ce n’est qu’un aperçu — choisir le bon test (Wilcoxon, t-test, ANOVA), les échantillons appariés, les groupes de référence et les symboles de signification personnalisés sont tout le sujet de la leçon dédiée Ajouter des p-values.
Les graphiques ci-dessus ont été rendus au moment de la construction. Vous voulez expérimenter ? Modifiez le code et appuyez sur Run — il s’exécute dans votre navigateur via webR (pas de serveur, pas d’installation). Essayez de remplacer ggboxplot par ggviolin, de changer la palette en "npg", d’ajouter notch = TRUE, ou de retourner avec rotate = TRUE.
Vous travaillez en Python ? Un guide seaborn des boîtes/violons arrive dans la série Python.
Demandez à Prova « dois-je utiliser une boîte à moustaches ou un graphique en violon pour mes données — et comment ajouter la bonne p-value ? » — elle répond avec du code que vous pouvez exécuter sur votre propre data frame, ce qui rend le choix reproductible. The runtime is the judge. Ask Prova →
x doit être un facteur. Exécutez df$dose <- factor(df$dose) d’abord ; ensuite order = c(...) les arrange."jco" ne colore que lorsque vous mappez aussi une variable à color ou fill (par ex. fill = "dose"). Sans attribut esthétique de groupement, il n’y a rien à colorer.add.params = list(fill = "white") pour que la boîte blanche ressorte sur le violon coloré.trim = TRUE). Mettez trim = FALSE pour la densité lissée complète.theme_pubr() ; n’ajoutez un thème que si vous voulez délibérément remplacer le réglage de publication par défaut.Utilisez ggboxplot() : ggboxplot(ToothGrowth, x = "dose", y = "len") dessine une boîte à moustaches prête à publier en un seul appel — aucun réglage de theme() n’est nécessaire (elle applique theme_pubr() automatiquement). Associez une variable de groupe à fill ou color (par exemple fill = "dose") et ajoutez une palette nommée (palette = "jco") pour colorer les boîtes par groupe.
Une boîte à moustaches résume la distribution avec cinq nombres (médiane, quartiles, moustaches) — compacte, mais elle masque la forme. Un graphique en violon dessine la densité complète (en miroir), ce qui révèle une bimodalité ou une asymétrie qu’une boîte à moustaches cacherait. Ils sont complémentaires : ggviolin(..., add = "boxplot") superpose une petite boîte à moustaches dans chaque violon pour montrer à la fois le résumé et la forme.
Ajoutez des points dispersés avec l’argument add : ggboxplot(ToothGrowth, x = "dose", y = "len", add = "jitter"). Le jitter étale horizontalement les points qui se superposent, si bien que vous voyez la taille réelle de l’échantillon et les éventuelles valeurs aberrantes. Utilisez add = "dotplot" pour un diagramme en points de Wilkinson, et add.params = list(size = ..., color = ...) pour styliser les points.
L’encoche est un intervalle de confiance d’environ 95 % autour de la médiane. Comme test visuel rapide : si les encoches de deux groupes ne se chevauchent pas, leurs médianes diffèrent probablement de façon significative. Activez-la avec ggboxplot(..., notch = TRUE). Pour une vraie p-value, ajoutez stat_compare_means() plutôt que de vous fier à l’encoche seule.
C’est le comportement par défaut trim = TRUE, qui coupe la densité aux minimum et maximum observés. Indiquez trim = FALSE pour dessiner la densité lissée complète (elle s’étend un peu au-delà des données). Le rognage est plus honnête sur l’étendue des données ; la version non rognée paraît plus lisse — choisissez selon votre public.
Complétez le code pour que chaque groupe dose soit dessiné comme un violon rempli par dose avec la palette "jco", avec une boîte à moustaches blanche à l’intérieur de chaque violon.
library(ggpubr)
df <- ToothGrowth
df$dose <- factor(df$dose)
ggviolin(df, x = "dose", y = "len",
fill = "dose", palette = "jco",
add = "boxplot", add.params = list(fill = "white"))
Vous avez construit des boîtes à moustaches et des graphiques en violon prêts à publier à la manière de ggpubr : ggboxplot() pour les boîtes — colorées ou remplies par groupe, avec points jitterés, encoches, groupes réordonnés et disposition horizontale — et ggviolin() pour les violons — avec une boîte à moustaches intérieure, des lignes de quantiles et des queues non rognées. Parce que ggpubr applique theme_pubr() automatiquement, chaque graphique est prêt pour la figure dès le premier appel, et une couche stat_compare_means() le transforme en figure de revue avec la p-value par-dessus.
Pour la grammaire sous-jacente, voir les leçons ggplot2 boîte à moustaches et graphique en violon. Pour annoter correctement la signification — quel test, échantillons appariés, groupes de référence, étoiles personnalisées — lisez ensuite la leçon Ajouter des p-values ; et pour choisir et interpréter les tests eux-mêmes, voir la prochaine série statistiques.
Vous préférez un livre ? R Graphics 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 ggpubr — 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 = {Boîtes à moustaches et violons en R (ggpubr)},
date = {2026-06-22},
url = {https://www.datanovia.com/learn/data-visualization/ggpubr/box-violin-plots},
langid = {fr}
}