Ajouter des lignes de référence dans ggplot2 (hline, vline, abline)
Ajoutez des lignes de référence horizontales, verticales, obliques et des segments — en direct dans votre navigateur
Ajoutez des lignes de référence à un graphique ggplot2 en R — une ligne horizontale avec geom_hline(), une ligne verticale avec geom_vline(), une ligne oblique avec geom_abline() et des segments finis avec geom_segment(). Stylisez-les avec linetype, colour et linewidth, puis modifiez et exécutez le code en direct, sans installation.
Date de publication
20 juin 2026
Modifié
7 juillet 2026
AstucePoints clés
Une ligne de référence marque une valeur significative sur un graphique — un seuil, une moyenne, une cible — sans modifier les données.
Ajoutez une ligne horizontale à une valeur y avec geom_hline(yintercept = ...).
Ajoutez une ligne verticale à une valeur x avec geom_vline(xintercept = ...).
Stylisez n’importe quelle ligne de référence avec linetype (par ex. "dashed", "dotted"), colour et linewidth.
Tracez une ligne oblique à partir d’une ordonnée à l’origine et d’une pente avec geom_abline(intercept = ..., slope = ...).
Tracez un segment fini entre deux points avec geom_segment(x, y, xend, yend) — ajoutez arrow = arrow() pour une flèche d’annotation.
Passez un vecteur d’ordonnées à l’origine pour tracer plusieurs lignes à la fois, et combinez geom_hline() + geom_vline() pour marquer un point.
Chaque graphique ci-dessous est rendu pour vous — modifiez ensuite n’importe quel exemple en direct dans le bac à sable.
Une ligne de référence est l’une des annotations les plus utiles d’un graphique : elle marque un seuil, une cible, une moyenne ou une limite afin que le lecteur voie instantanément comment les données s’y rapportent. En R, ggplot2 les ajoute comme des couches ordinaires — geom_hline() pour une ligne horizontale, geom_vline() pour une ligne verticale, geom_abline() pour une ligne oblique et geom_segment() pour un segment fini. Cette leçon ajoute chacune d’elles étape par étape ; les figures sont rendues ici même, et vous pouvez réexécuter ou modifier n’importe laquelle en direct.
Nous utilisons le jeu de données intégré mtcars : consommation de carburant et caractéristiques de conception pour 32 voitures issues des essais routiers Motor Trend de 1974. Nous utilisons principalement wt (le poids, en milliers de livres) sur l’axe des x et mpg (miles par gallon) sur l’axe des y, tracés sous forme de nuage de points sur lequel nous ajoutons les lignes de référence.
Ces geoms tracent des lignes de référence droites. Pour ajuster une courbe modèle à vos données (une régression ou une tendance LOESS), utilisez geom_smooth() — abordé dans la leçon sur le nuage de points — et pour tracer un graphique en courbes qui relie les observations le long de x, voyez la leçon sur le graphique en courbes.
Ajouter une ligne horizontale avec geom_hline()
geom_hline() trace une ligne horizontale sur tout le panneau à la valeur y que vous passez à yintercept. Une utilisation courante consiste à marquer la moyenne globale, afin que le lecteur voie quels points se situent au-dessus ou en dessous de la moyenne. Calculez la moyenne dans le bloc avec base R.
library(ggplot2)mean_mpg <-mean(mtcars$mpg)ggplot(mtcars, aes(x = wt, y = mpg)) +geom_point(color ="#3a86d4") +geom_hline(yintercept = mean_mpg, linetype ="dashed", color ="red") +labs(x ="Weight (1000 lbs)", y ="Miles per gallon") +theme_minimal()
Ajouter une ligne verticale avec geom_vline()
geom_vline() est l’équivalent vertical : passez une valeur x à xintercept et il trace une ligne remontant tout le panneau. Ici, nous marquons le poids moyen des voitures.
library(ggplot2)mean_wt <-mean(mtcars$wt)ggplot(mtcars, aes(x = wt, y = mpg)) +geom_point(color ="#3a86d4") +geom_vline(xintercept = mean_wt, linetype ="dashed", color ="red") +labs(x ="Weight (1000 lbs)", y ="Miles per gallon") +theme_minimal()
Styliser les lignes de référence : linetype, colour, linewidth
Une ligne de référence est une annotation, pas une donnée, elle doit donc se lire comme secondaire. Contrôlez son apparence avec trois arguments : linetype ("solid", "dashed", "dotted", "dotdash", …), colour et linewidth (l’épaisseur de la ligne — qui a remplacé l’ancien argument size dans ggplot2 3.4). Pour le catalogue complet des types de ligne nommés et numériques, voyez la leçon sur les types de ligne.
library(ggplot2)ggplot(mtcars, aes(x = wt, y = mpg)) +geom_point(color ="#3a86d4") +geom_hline(yintercept =20, linetype ="dotted", color ="grey30", linewidth =1.2) +labs(x ="Weight (1000 lbs)", y ="Miles per gallon") +theme_minimal()
Ajouter une ligne oblique avec geom_abline()
geom_abline() trace une ligne droite définie par une ordonnée à l’origine et une pente — utile pour une relation de référence (un taux cible, un seuil de rentabilité ou un modèle connu). Ici, nous traçons une ligne qui descend de 5 mpg par 1000 livres en partant de 37 mpg, sans ajuster aucun modèle.
library(ggplot2)ggplot(mtcars, aes(x = wt, y = mpg)) +geom_point(color ="#3a86d4") +geom_abline(intercept =37, slope =-5, color ="darkorange", linewidth =1) +labs(x ="Weight (1000 lbs)", y ="Miles per gallon") +theme_minimal()
Pour ajuster et tracer une vraie courbe de régression ou de tendance à partir de vos données au lieu d’une pente fixe, utilisez geom_smooth(method = "lm") — voyez la leçon sur le nuage de points.
Ajouter un segment fini avec geom_segment()
geom_hline() et ses semblables couvrent tout le panneau. Lorsque vous voulez une ligne uniquement entre deux points, utilisez geom_segment() : donnez-lui un début (x, y) et une fin (xend, yend). Ici, nous relions les voitures les plus légères et les plus lourdes pour mettre en évidence la baisse globale de la consommation de carburant.
library(ggplot2)ggplot(mtcars, aes(x = wt, y = mpg)) +geom_point(color ="#3a86d4") +geom_segment(x =1.5, y =30, xend =5.3, yend =12,color ="darkred", linewidth =1 ) +labs(x ="Weight (1000 lbs)", y ="Miles per gallon") +theme_minimal()
Transformer un segment en flèche d’annotation
Ajoutez arrow = arrow() à geom_segment() pour tracer une pointe de flèche — pratique pour pointer une caractéristique du graphique. arrow() réside dans le paquet grid livré avec R ; contrôlez la taille de la pointe avec length = unit(...).
library(ggplot2)ggplot(mtcars, aes(x = wt, y = mpg)) +geom_point(color ="#3a86d4") +geom_segment(x =4, y =32, xend =2, yend =33,color ="darkred", linewidth =1,arrow =arrow(length =unit(0.3, "cm")) ) +labs(x ="Weight (1000 lbs)", y ="Miles per gallon") +theme_minimal()
Plusieurs lignes à la fois, et combiner h + v
yintercept et xintercept acceptent un vecteur, de sorte qu’une seule couche peut tracer plusieurs lignes — par exemple les quartiles d’une variable. Et comme chaque ligne est sa propre couche, vous pouvez combiner une ligne horizontale et une ligne verticale pour marquer un seul point d’intérêt (ici, les moyennes des deux axes).
library(ggplot2)mpg_q <-quantile(mtcars$mpg, probs =c(0.25, 0.5, 0.75))ggplot(mtcars, aes(x = wt, y = mpg)) +geom_point(color ="#3a86d4") +geom_hline(yintercept = mpg_q, linetype ="dotted", color ="grey70") +geom_hline(yintercept =mean(mtcars$mpg), linetype ="dashed", color ="red") +geom_vline(xintercept =mean(mtcars$wt), linetype ="dashed", color ="red") +labs(x ="Weight (1000 lbs)", y ="Miles per gallon") +theme_minimal()
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 matplotlib sur les lignes de référence (axhline, axvline, axline) arrive dans la série Python.
🟢 Avec un agent IA
Demandez à Prova« ajoute une ligne horizontale à la moyenne de mpg ET annote-la avec sa valeur » — 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 →
Questions fréquentes
NoteComment ajouter une ligne horizontale à la moyenne dans ggplot2 ?
Calculez la moyenne avec base R et passez-la à geom_hline() : geom_hline(yintercept = mean(mtcars$mpg)). Ajoutez linetype = "dashed" et color = "red" pour que la ligne se lise comme une annotation plutôt que comme une donnée.
NoteQuelle est la différence entre geom_hline(), geom_vline() et geom_abline() ?
geom_hline() trace une ligne horizontale à une valeur y (yintercept), geom_vline() une ligne verticale à une valeur x (xintercept) et geom_abline() une ligne oblique à partir d’un intercept et d’un slope. Les trois couvrent tout le panneau ; utilisez plutôt geom_segment() lorsque vous voulez une ligne uniquement entre deux points.
NoteComment rendre une ligne de référence en tirets ou en pointillés dans ggplot2 ?
Définissez l’argument linetype : linetype = "dashed", "dotted", "dotdash" ou "solid". Associez-le à color et linewidth (l’épaisseur de la ligne) pour contrôler entièrement l’apparence — par ex. geom_hline(yintercept = 20, linetype = "dotted", linewidth = 1.2).
NoteComment ajouter plusieurs lignes de référence à la fois ?
Passez un vecteur à yintercept ou xintercept et une seule couche les trace toutes — par exemple geom_hline(yintercept = quantile(mtcars$mpg, c(0.25, 0.5, 0.75))). Comme chaque geom est sa propre couche, vous pouvez aussi combiner un geom_hline() et un geom_vline() pour marquer un seul point.
NotePourquoi mon geom_hline() utilise-t-il linewidth au lieu de size ?
ggplot2 3.4 a renommé l’attribut esthétique d’épaisseur de ligne de size en linewidth, de sorte que geom_hline(..., size = 1.2) génère désormais un avertissement de dépréciation. Utilisez plutôt linewidth = 1.2 pour définir l’épaisseur de n’importe quelle ligne de référence.
Testez vos connaissances
ImportantExercice : ajouter une ligne de référence verticale
Complétez le code pour que le graphique affiche une ligne verticale dashed au poids moyen des voitures.
# Use geom_vline() with xintercept = mean(mtcars$wt) and linetype = "dashed"
Vous avez ajouté tous les types de ligne de référence droite dans ggplot2 : une ligne horizontale avec geom_hline(), une ligne verticale avec geom_vline(), une ligne oblique avec geom_abline() et un segment fini (avec une pointe de flèche facultative) avec geom_segment() — et vous les avez stylisés avec linetype, colour et linewidth. Pour ajuster une courbe de tendance basée sur un modèle au lieu d’une pente fixe, rendez-vous à la leçon sur le nuage de points ; pour relier des observations en un graphique en courbes, voyez la leçon sur le graphique en courbes.
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.