library(ggplot2)
ggplot(ToothGrowth, aes(sample = len)) +
stat_qq(colour = "#3a86d4") +
labs(x = "Theoretical quantiles", y = "Sample quantiles") +
theme_minimal()
Tracer et lire un diagramme quantile-quantile pour vérifier la normalité — en direct dans votre navigateur
Apprenez à construire un QQ plot en R avec ggplot2 — tracez-le avec stat_qq(), ajoutez la droite de référence à 45 degrés avec stat_qq_line(), puis colorez ou variez la forme des points par groupe. Modifiez et exécutez le code en direct, sans rien installer.
20 juin 2026
7 juillet 2026
sample (et non à x/y) et vous tracez les points avec stat_qq().stat_qq_line() pour tracer la droite de référence : si les points la suivent de près, les données sont à peu près normales.scale_colour_viridis_d()) pour comparer la normalité entre les groupes.ggpubr::ggqqplot().Un QQ plot (diagramme quantile-quantile) est le moyen visuel le plus rapide de poser une seule question : mes données suivent-elles une distribution normale ? Il représente les quantiles de votre échantillon en regard des quantiles que l’on attendrait d’une normale parfaite — si les deux concordent, les points s’alignent sur une droite. De nombreux tests (t-test, ANOVA, régression linéaire) supposent la normalité, si bien que le QQ plot est une première vérification de routine. En R, ggplot2 en trace un avec une seule couche — stat_qq() — et ajoute la droite de référence avec stat_qq_line(). Cette leçon en construit un pas à pas ; 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) selon deux modes d’administration (supp : jus d’orange OJ ou acide ascorbique VC). Nous vérifions si len est distribuée normalement.
Un QQ plot diffère de la plupart des graphiques ggplot2 : vous n’associez pas x et y. À la place, vous associez la variable que vous voulez vérifier à l’attribut esthétique spécial sample, et stat_qq() calcule pour vous les quantiles théoriques (x) et les quantiles de l’échantillon (y).
Le graphique n’est utile qu’une fois que vous savez le lire. L’idée : chaque point compare une valeur observée à l’endroit où une normale parfaite la placerait. Si les données sont normales, les points s’alignent sur une droite.
Pour juger qu’un point est « sur la droite », encore faut-il que la droite soit tracée. stat_qq_line() ajoute une droite de référence passant par les premier et troisième quartiles — la section suivante la trace.
Superposez stat_qq_line() à stat_qq(). Par défaut, elle trace la droite passant par les quartiles des données, qui est la référence QQ standard. Vous pouvez maintenant voir d’un coup d’œil à quel point chaque point s’écarte.

Ici les points restent proches de la droite au centre et ne se courbent que légèrement aux queues — la longueur des dents est raisonnablement compatible avec une distribution normale.
La normalité est souvent quelque chose que l’on veut vérifier par groupe, et pas seulement dans l’ensemble. Associez la variable de regroupement à colour et ggplot2 trace un ensemble de points (et une droite de référence) par groupe. Utilisez une palette adaptée au daltonisme comme viridis pour que la figure reste lisible par tout le monde.

Chaque groupe de supplément reçoit ses propres points et sa droite de référence, ce qui vous permet de comparer d’un coup d’œil à quel point chacun suit la normale. Pour déplacer ou restyler la légende, voyez le guide des légendes ggplot2.
Lorsqu’une figure est susceptible d’être imprimée en noir et blanc, distinguez les groupes par la forme en plus de (ou à la place de) la couleur. Associez la variable de regroupement à shape ; combinez-la avec colour pour une figure qui résiste à la fois à la couleur et aux niveaux de gris.

Pour contrôler manuellement quelles formes sont utilisées, voyez le guide des formes de points.
stat_qq_line() vous donne la droite de référence, mais elle ne montre pas quelle quantité de dispersion est acceptable avant de devoir s’inquiéter. Une variante courante, prête à publier, ajoute une bande de confiance à 95 % ombrée autour de la droite : les points à l’intérieur de la bande sont compatibles avec la normalité. La fonction ggpubr::ggqqplot() trace exactement cela en un seul appel — une excellente étape suivante une fois que vous avez compris les briques de base présentées ici.
library(ggplot2)
# Approximate a confidence band in base ggplot2: jitter the line bounds for illustration.
# (For a proper 95% band use ggpubr::ggqqplot — see the cross-link above.)
ggplot(ToothGrowth, aes(sample = len)) +
stat_qq_line(colour = "grey40") +
stat_qq(colour = "#3a86d4") +
labs(x = "Theoretical quantiles", y = "Sample quantiles") +
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 QQ plot avec matplotlib / statsmodels arrive dans la série Python.
Demandez à Prova « ce QQ plot indique-t-il que la longueur des dents est normale, ou devrais-je lancer un test de Shapiro-Wilk ? » — elle répond avec du code que vous pouvez exécuter, si bien que l’explication est reproductible. The runtime is the judge. Ask Prova →
Associez votre variable numérique à l’attribut esthétique spécial sample (et non à x/y), puis ajoutez stat_qq(), par exemple ggplot(ToothGrowth, aes(sample = len)) + stat_qq(). stat_qq() calcule pour vous les quantiles théoriques et les quantiles de l’échantillon.
Superposez stat_qq_line() à stat_qq(). Par défaut, elle trace la droite passant par les premier et troisième quartiles des données — la référence QQ standard — pour que vous voyiez à quel point chaque point s’écarte de la normale.
Les points qui suivent la droite de près sont à peu près normaux. Des points qui s’incurvent vers le haut à droite (vers le bas à gauche) signalent une longue queue à droite (asymétrie à droite) ; une forme en S (au-dessus à gauche, en dessous à droite) signale des queues lourdes ; quelques points qui se détachent aux extrémités suggèrent des valeurs aberrantes.
Associez la variable de regroupement à colour (et/ou shape) à l’intérieur de aes(), par exemple aes(sample = len, colour = supp). ggplot2 trace alors un ensemble de points et une droite de référence stat_qq_line() par groupe ; ajoutez scale_colour_viridis_d() pour une palette adaptée au daltonisme.
La fonction de base stat_qq_line() ne trace que la droite de référence, pas une bande. Pour un QQ plot prêt à publier avec une bande de confiance à 95 % ombrée, utilisez la fonction ggpubr::ggqqplot(), qui trace les points, la droite et la bande en un seul appel.
Complétez le code pour que le QQ plot trace aussi sa droite de référence des quantiles.
Vous avez construit un QQ plot ggplot2 avec stat_qq(), appris à lire la droite de référence à 45 degrés pour la normalité, ajouté cette droite avec stat_qq_line(), coloré et varié la forme des points par groupe avec une palette adaptée au daltonisme, et vu où une fonction à bande de confiance prend le relais. Ensuite, explorez la boîte à moustaches et le graphique en violon pour comparer les distributions entre groupes, ou passez à ggpubr::ggqqplot() pour la version prête à publier avec une bande à 95 %.
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 = {QQ plot en R : un guide ggplot2},
date = {2026-06-20},
url = {https://www.datanovia.com/learn/data-visualization/ggplot2/qq-plot},
langid = {fr}
}