Types de lignes en R : valeurs lty et linetype ggplot2
La référence lty 0-6, plus comment tracer des lignes pleines, tiretées et pointillées en R de base et ggplot2
La référence des types de lignes en R. Voyez les valeurs lty 0 à 6 — blank, solid, dashed, dotted, dotdash, longdash, twodash — avec leurs noms et des motifs hex personnalisés, puis définissez-les en R de base avec lty et lwd, et en ggplot2 avec l’attribut linetype et scale_linetype_manual().
Date de publication
27 juin 2026
Modifié
8 juillet 2026
AstucePoints clés
R possède sept types de lignes intégrés, définis avec lty dans les tracés de base et linetype dans ggplot2.
Les valeurs lty sont 0 blank, 1 solid, 2 dashed, 3 dotted, 4 dotdash, 5 longdash, 6 twodash. Noms et numéros sont interchangeables : lty = 2 équivaut à lty = "dashed".
En R de base, passez lty (et lwd pour la largeur) à plot(type = "l"), lines(), abline() et segments().
En ggplot2, définissez un style unique avec geom_line(linetype = "dashed"), ou mappez un groupe avec aes(linetype = group) et surchargez avec scale_linetype_manual().
Pour un contrôle fin, un type de ligne peut aussi être une chaîne hex personnalisée comme "3313" décrivant le motif tiret-espace.
Introduction
Vous tracez deux lignes sur un même graphique — observé contre prédit, traitement contre témoin — et il faut pouvoir les distinguer à l’impression, là où la couleur risque de ne pas survivre. La réponse est le type de ligne : faites-en une pleine et l’autre tiretée. R vous offre sept styles intégrés, et les mêmes sept fonctionnent que vous traciez en R de base ou en ggplot2 ; seul le nom de l’argument change (lty contre linetype).
Voici la référence. D’abord le tableau lty pour repérer d’un coup d’œil n’importe laquelle des valeurs 0-6, puis les recettes pour définir les types de lignes en R de base et en ggplot2 — lignes simples, largeur de ligne, et un style différent par groupe.
La référence des types de lignes : valeurs lty 0 à 6
R connaît sept types de lignes. Vous pouvez nommer un type de ligne soit par numéro (0-6), soit par texte ("blank", "solid", …), et les deux sont identiques — lty = 2 revient au même que lty = "dashed". Le tableau ci-dessous trace les sept, étiquetés avec les deux formes.
line_types <-c("blank", "solid", "dashed", "dotted","dotdash", "longdash", "twodash")par(mar =c(0, 0, 1, 0))plot(NA, xlim =c(0, 1), ylim =c(0, 7),axes =FALSE, xlab ="", ylab ="",main ="Line types in R (lty)")for (i in0:6) {lines(c(0.35, 1), c(7- i, 7- i), lty = i, lwd =3, col ="#3a86d4")text(0.15, 7- i, labels =paste0(i, ". \"", line_types[i +1], "\""),font =2, adj =0)}
Gardez cette correspondance sous la main :
lty
Nom
Aspect
0
"blank"
rien de tracé (une ligne invisible)
1
"solid"
continue — la valeur par défaut
2
"dashed"
tirets réguliers
3
"dotted"
petits points
4
"dotdash"
point et tiret en alternance
5
"longdash"
longs tirets
6
"twodash"
deux longueurs de tirets en alternance
lty = 0 (« blank ») ne trace rien — utile quand vous voulez faire disparaître une ligne sous condition sans la retirer des données.
Types de lignes personnalisés avec une chaîne hex
Au-delà des sept noms, lty accepte une chaîne hex d’au plus huit chiffres qui décrit le motif tiret-espace : chaque chiffre est la longueur (en points) d’un segment, alternant ligne, espace, ligne, espace…. Ainsi "22" est un court tiret suivi d’un espace égal ; "1333" est un court tiret, un long espace, un long tiret, un long espace.
patterns <-c("22", "13", "1333")par(mar =c(0, 0, 1, 0))plot(NA, xlim =c(0, 1), ylim =c(0, 4),axes =FALSE, xlab ="", ylab ="", main ="Custom line patterns")for (i inseq_along(patterns)) {lines(c(0.3, 1), c(4- i, 4- i), lty = patterns[i], lwd =3, col ="#3a86d4")text(0.15, 4- i, labels =paste0("\"", patterns[i], "\""), font =2, adj =0)}
Ces motifs personnalisés fonctionnent à la fois en R de base (lty = "1333") et en ggplot2 (linetype = "1333").
Types de lignes en R de base : lty et lwd
Dans les tracés de base, deux arguments contrôlent l’aspect d’une ligne : lty pour le type et lwd pour la largeur (1 est la valeur par défaut ; 2 est deux fois plus épais). Tous deux appartiennent à plot(type = "l"), lines(), abline() et segments().
x <-1:10y <- x^2par(mfrow =c(1, 3), mar =c(4, 4, 2, 1))plot(x, y, type ="l", main ="Solid (default)") # lty = 1plot(x, y, type ="l", lty =2, main ="Dashed (lty = 2)") # dashedplot(x, y, type ="l", lty =2, lwd =3, main ="Thicker") # dashed + wide
par(mfrow =c(1, 1))
Par défaut lty = 1 (solid) et lwd = 1. Définissez lty = 2 pour une ligne tiretée, et augmentez lwd pour l’épaissir.
Deux lignes, deux styles, avec une légende
Le cas courant comporte plus d’une ligne sur un graphique. Tracez la première avec plot(), ajoutez les autres avec lines(), et donnez à chacune un lty différent. Une legend() calée sur les mêmes valeurs lty indique au lecteur laquelle est laquelle — essentiel quand le graphique est imprimé en noir et blanc.
legend() prend les mêmes arguments col et lty que les lignes, donc passer lty = 1:2 trace une clé pleine puis une clé tiretée — correspondant exactement au graphique.
lty sur abline() et segments()
Les lignes de référence que vous superposez prennent lty elles aussi. Un abline() tireté est la manière habituelle de marquer un seuil ou une pente ajustée sans qu’il rivalise avec les données.
plot(mtcars$wt, mtcars$mpg, pch =19, col ="grey40",xlab ="Weight", ylab ="MPG", frame =FALSE)abline(h =mean(mtcars$mpg), lty =2, lwd =2, col ="#3a86d4") # dashed mean lineabline(lm(mpg ~ wt, data = mtcars), lty =3, lwd =2, col ="#E7298A") # dotted fit
Les deux appels abline() portent leur propre lty, de sorte que la ligne moyenne tiretée et la droite de régression pointillée se lisent comme des annotations distinctes.
Types de lignes en ggplot2 : l’attribut linetype
En ggplot2, l’argument est linetype et la largeur est linewidth (ggplot2 récent ; l’ancien code utilisait size). Il accepte exactement les mêmes noms et numéros — linetype = "dashed" ou linetype = 2.
Définissez un style unique pour toute la ligne en passant linetypeen dehors d’aes().
library(ggplot2)# Mean tooth length per dose, computed with base R (no tidyverse)tg <- ToothGrowthtg$dose <-factor(tg$dose)means <-aggregate(len ~ dose, data = tg, FUN = mean)ggplot(means, aes(x = dose, y = len, group =1)) +geom_line(linetype ="dashed", linewidth =1, color ="#3a86d4") +geom_point(size =2, color ="#3a86d4") +labs(x ="Dose", y ="Mean length") +theme_minimal()
group = 1 indique à geom_line() de relier tous les points en une seule ligne (un axe x discret n’en trace aucune sinon). linetype = "dashed" se place en dehors d’aes() parce que c’est un style fixe, pas une donnée.
Un type de ligne différent par groupe
Pour donner à chaque groupe son propre style, mappez une variable à linetypeà l’intérieur d’aes(). ggplot2 attribue alors un type de ligne distinct par niveau et construit la légende automatiquement.
library(ggplot2)tg <- ToothGrowthtg$dose <-factor(tg$dose)means2 <-aggregate(len ~ dose + supp, data = tg, FUN = mean)ggplot(means2, aes(x = dose, y = len, group = supp)) +geom_line(aes(linetype = supp, color = supp), linewidth =1) +geom_point(aes(color = supp), size =2) +labs(x ="Dose", y ="Mean length") +theme_minimal() +theme(legend.position ="top")
Mapper à la foislinetype et color au groupe est une bonne pratique : les lignes restent distinguables en niveaux de gris (par le style) et en couleur (par la teinte), de sorte que la figure survit à tout support.
Choisissez vous-même les styles : scale_linetype_manual()
Quand vous voulez des styles précis plutôt que les valeurs par défaut de ggplot2, ajoutez scale_linetype_manual() et listez les types de lignes dans l’ordre des niveaux du groupe. Associez-le à scale_color_manual() pour des couleurs assorties.
library(ggplot2)tg <- ToothGrowthtg$dose <-factor(tg$dose)means2 <-aggregate(len ~ dose + supp, data = tg, FUN = mean)ggplot(means2, aes(x = dose, y = len, group = supp)) +geom_line(aes(linetype = supp, color = supp), linewidth =1) +geom_point(aes(color = supp), size =2) +scale_linetype_manual(values =c("solid", "dashed")) +scale_color_manual(values =c("#00AFBB", "#FC4E07")) +labs(x ="Dose", y ="Mean length") +theme_minimal() +theme(legend.position ="top")
values = c("solid", "dashed") se mappe aux niveaux du groupe dans l’ordre. L’attribut linetype ne se limite pas à geom_line() — il stylise aussi geom_smooth(), geom_density(), geom_hline(), geom_vline(), geom_abline() et geom_segment().
Essayez-le en direct
Modifiez les valeurs lty et appuyez sur Run — cela trace le tableau de référence R de base dans votre navigateur via webR, sans installation. Essayez un motif personnalisé comme "1333".
🟢 Avec un agent IA
Demandez à Prova« comment faire pour que chaque ligne de mon ggplot ait un type de ligne différent par groupe ? » — elle répond avec du code R que vous pouvez exécuter sur vos propres données, de sorte que le résultat est reproductible. The runtime is the judge.Demander à Prova →
Problèmes courants
Mon graphique {webr} affiche des carrés ou de mauvais tirets. Les types de lignes sont rendus par le périphérique graphique du système, donc des lignes très fines à petite taille peuvent se ressembler à l’écran. Augmentez lwd (essayez lwd = 3) et élargissez le graphique pour que "dotdash" et "twodash" soient faciles à distinguer — ils ne diffèrent que par l’espacement de leurs segments.
linetype ne fait rien / trace une seule ligne pleine. Deux causes habituelles. Si vous définissez geom_line(linetype = ...) mais ne voyez aucune ligne, il vous manque group = sur un axe x discret — ajoutez group = 1 (ligne unique) ou group = yourvar (par groupe). Si vous avez mappé une variable continue à linetype, ggplot2 renvoie une erreur — linetype est destiné aux groupes discrets ; convertissez-la d’abord avec factor().
Questions fréquentes
NoteQuels sont les types de lignes en R ?
R possède sept types de lignes intégrés, sélectionnés avec lty (base) ou linetype (ggplot2) : 0 blank, 1 solid, 2 dashed, 3 dotted, 4 dotdash, 5 longdash, 6 twodash. Vous pouvez aussi passer une chaîne hex personnalisée telle que "1333" pour définir votre propre motif tiret-espace.
NoteQuelles sont les valeurs lty en R ?
lty prend un numéro de 0 à 6 ou le nom équivalent : 0 = "blank", 1 = "solid", 2 = "dashed", 3 = "dotted", 4 = "dotdash", 5 = "longdash", 6 = "twodash". Numéros et noms sont interchangeables — lty = 2 est identique à lty = "dashed".
NoteComment tracer une ligne tiretée en ggplot2 ?
Ajoutez geom_line(linetype = "dashed") (ou linetype = 2). Pour une ligne de référence tiretée, utilisez geom_hline(yintercept = ..., linetype = "dashed"). Pour tireter chaque groupe différemment, mappez le groupe à l’intérieur d’aes(linetype = group).
NoteComment définir la largeur de ligne en R ?
En R de base, utilisez lwd (par exemple plot(x, y, type = "l", lwd = 2)) ; lwd = 1 est la valeur par défaut et le numéro est un multiplicateur. En ggplot2, utilisez linewidth dans geom_line(linewidth = 1) (les anciennes versions de ggplot2 utilisaient size).
NoteComment changer les types de lignes par groupe en ggplot2 ?
Mappez la variable de groupement à l’attribut linetype : geom_line(aes(linetype = group)). Pour choisir les styles exacts, ajoutez scale_linetype_manual(values = c("solid", "dashed")). Mapper aussi color au même groupe garde les lignes distinctes à la fois en couleur et en niveaux de gris.
Testez votre compréhension
ImportantExercice : tracer deux lignes avec des styles différents
Deux vecteurs sont donnés ci-dessous. Tracez y1 comme une ligne pleine et ajoutez y2 comme une ligne pointillée (lty = 3) deux fois plus épaisse (lwd = 2). Puis ajoutez une légende en haut à gauche associant chaque ligne à son style.
AstuceIndice
Commencez par plot(x, y1, type = "l", lwd = 2). Ajoutez la seconde ligne avec lines(x, y2, lty = 3, lwd = 2, col = "#3a86d4"). Puis legend("topleft", legend = c("y1", "y2"), lty = c(1, 3)).
AstuceSolution
plot(x, y1, type ="l", lwd =2, col ="#E7298A",xlab ="x", ylab ="y", frame =FALSE)lines(x, y2, lty =3, lwd =2, col ="#3a86d4")legend("topleft", legend =c("y1", "y2"),col =c("#E7298A", "#3a86d4"), lty =c(1, 3))
lty = 3 donne le style pointillé, lwd = 2 double l’épaisseur, et le lty = c(1, 3) de la légende trace une clé pleine puis une clé pointillée pour correspondre.
Vérification rapide. Vous voulez lty = 4. À quoi ressemble cette ligne, et quel est son nom textuel ?
AstuceAfficher la réponse
lty = 4 est "dotdash" — un point et un tiret en alternance. Numéros et noms sont interchangeables, donc lty = 4 et lty = "dotdash" tracent la même ligne.
Conclusion
Les types de lignes en R se résument à un petit tableau : lty 0-6 (ou les noms correspondants), définis avec lty/lwd dans les tracés de base et linetype/linewidth en ggplot2. Utilisez une ligne pleine plus une ligne tiretée pour séparer deux séries, mappez linetype à un groupe quand vous en avez plusieurs, et recourez à scale_linetype_manual() quand vous voulez choisir les styles vous-même. Mapper à la fois le type de ligne et la couleur au groupe est l’habitude qui garde vos figures lisibles à l’impression comme en couleur.
Cette leçon est reproductible : chaque figure a été produite par le code montré, exécuté au moment de la compilation (s’ils s’affichent, le code fonctionne), et le bac à sable se ré-exécute en direct dans votre navigateur. Modifiez n’importe quel bloc et Run. The runtime is the judge.
@online{2026,
author = {},
title = {Types de lignes en R : valeurs lty et linetype ggplot2},
date = {2026-06-27},
url = {https://www.datanovia.com/learn/data-visualization/line-types-in-r},
langid = {fr}
}