QQ plot en R : un guide ggplot2

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.

Date de publication

20 juin 2026

Modifié

7 juillet 2026

AstucePoints clés
  • Un QQ plot (diagramme quantile-quantile) vérifie si une variable numérique suit une distribution théorique — généralement la distribution normale.
  • Dans ggplot2, vous associez la variable à sample (et non à x/y) et vous tracez les points avec stat_qq().
  • Ajoutez 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.
  • Lisez les queues — des points qui s’incurvent au-dessus de la droite, à droite, signalent une longue queue à droite, c’est-à-dire des valeurs hautes plus éloignées de la moyenne (asymétrie à droite) ; une forme en S indique des queues lourdes.
  • Colorez les points par groupe avec une palette adaptée au daltonisme (scale_colour_viridis_d()) pour comparer la normalité entre les groupes.
  • Pour un QQ plot prêt à publier avec une bande de confiance à 95 %, tournez-vous vers ggpubr::ggqqplot().
  • Chaque graphique ci-dessous est rendu pour vous — modifiez ensuite n’importe quel exemple en direct dans le bac à sable.
Obtenez le livre — GGPlot2 Essentials (PDF)

Introduction

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.

Construire un QQ plot de base avec stat_qq()

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).

library(ggplot2)
ggplot(ToothGrowth, aes(sample = len)) +
  stat_qq(colour = "#3a86d4") +
  labs(x = "Theoretical quantiles", y = "Sample quantiles") +
  theme_minimal()

ggplot2 normal QQ plot of tooth length; sample quantiles plotted against theoretical normal quantiles, points roughly along a diagonal.

Lire le QQ plot : la droite de référence à 45 degrés

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.

  • Des points sur la droite → les données sont approximativement normales.
  • Des points qui s’incurvent vers le haut à l’extrémité droite (et vers le bas à gauche) → une longue queue à droite / asymétrie à droite.
  • Une forme en S (au-dessus à gauche, en dessous à droite) → des queues lourdes (plus de valeurs extrêmes que la normale).
  • Quelques points qui se détachent aux extrémités → des valeurs aberrantes potentielles.

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.

Ajouter la droite de référence avec stat_qq_line()

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.

library(ggplot2)
ggplot(ToothGrowth, aes(sample = len)) +
  stat_qq(colour = "#3a86d4") +
  stat_qq_line(colour = "red", linewidth = 0.8) +
  labs(x = "Theoretical quantiles", y = "Sample quantiles") +
  theme_minimal()

ggplot2 normal QQ plot of tooth length with a red 45-degree reference line; most points hug the line with slight curvature at the ends.

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.

Colorer les points du QQ plot par groupe

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.

library(ggplot2)
ggplot(ToothGrowth, aes(sample = len, colour = supp)) +
  stat_qq() +
  stat_qq_line() +
  scale_colour_viridis_d() +
  labs(x = "Theoretical quantiles", y = "Sample quantiles", colour = "Supplement") +
  theme_minimal()

ggplot2 normal QQ plot of tooth length with points coloured by supplement (OJ and VC) using a colourblind-safe viridis palette, each group with its own reference line.

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.

Varier la forme des points du QQ plot par groupe

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.

library(ggplot2)
ggplot(ToothGrowth, aes(sample = len, colour = supp, shape = supp)) +
  stat_qq() +
  stat_qq_line() +
  scale_colour_viridis_d() +
  labs(x = "Theoretical quantiles", y = "Sample quantiles",
       colour = "Supplement", shape = "Supplement") +
  theme_minimal()

ggplot2 normal QQ plot of tooth length with point shapes and colours distinguishing the OJ and VC supplement groups.

Pour contrôler manuellement quelles formes sont utilisées, voyez le guide des formes de points.

Une variante avec droite de référence / bande de confiance

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()

ggplot2 normal QQ plot of tooth length with a shaded grey ribbon approximating a confidence band around the reference line.

Essayez en direct

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.

🟢 Avec un agent IA

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 →

Questions fréquentes

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.

Testez vos connaissances

Complétez le code pour que le QQ plot trace aussi sa droite de référence des quantiles.

# Use stat_qq_line() — it draws the reference line through the quartiles.
library(ggplot2) ggplot(ToothGrowth, aes(sample = len)) + stat_qq(colour = "#3a86d4") + stat_qq_line(colour = "red")
library(ggplot2)
ggplot(ToothGrowth, aes(sample = len)) +
  stat_qq(colour = "#3a86d4") +
  stat_qq_line(colour = "red")

Conclusion

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 %.

Leçons connexes

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.

Obtenir le livre (PDF) →Les leçons restent gratuites en ligne.
Cette page vous a-t-elle été utile ?

Prouvez que vous savez le faire. Maîtrisez toute la série ggplot2 — suivez votre parcours, construisez des projets et obtenez un certificat.

Commencer gratuitement →

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

Passer à Pro →

✓ Vous êtes Pro — continuez. The runtime is the judge.

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.

Partager cette pageXLinkedInRedditHN
Note

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.

Réutilisation

Citation

BibTeX
@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}
}
Veuillez citer ce travail comme suit :
“QQ plot en R : un guide ggplot2.” 2026. June 20. https://www.datanovia.com/learn/data-visualization/ggplot2/qq-plot.