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 in 0: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)
}

Reference chart of the seven R line types drawn one above another from solid to twodash, each labelled with its lty number and text name: 0 blank, 1 solid, 2 dashed, 3 dotted, 4 dotdash, 5 longdash, 6 twodash.

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 in seq_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)
}

Three custom line types defined by hex dash patterns 22, 13 and 1333, drawn one above another in steel blue, each labelled with its pattern string.

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:10
y <- x^2

par(mfrow = c(1, 3), mar = c(4, 4, 2, 1))
plot(x, y, type = "l", main = "Solid (default)")               # lty = 1
plot(x, y, type = "l", lty = 2, main = "Dashed (lty = 2)")     # dashed
plot(x, y, type = "l", lty = 2, lwd = 3, main = "Thicker")     # dashed + wide

Three base R line plots of y against x: the first solid, the second dashed (lty = 2), the third dashed and three times thicker (lwd = 3).

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.

x  <- 1:10
y1 <- x^2
y2 <- 2 * y1

plot(x, y1, type = "b", frame = FALSE, pch = 19,
     col = "#E7298A", xlab = "x", ylab = "y",
     lty = 1, lwd = 1)                                # solid
lines(x, y2, type = "b", pch = 18,
      col = "#3a86d4", lty = 2, lwd = 1)              # dashed

legend("topleft", legend = c("Line 1", "Line 2"),
       col = c("#E7298A", "#3a86d4"), lty = 1:2, cex = 0.9)

A base R plot with two lines: a solid red line for y = x squared and a dashed blue line for twice that, with a matching top-left legend mapping line style and colour to each series.

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 line
abline(lm(mpg ~ wt, data = mtcars), lty = 3, lwd = 2, col = "#E7298A")  # dotted fit

A base R scatter plot of mtcars weight against miles per gallon with a dashed steel-blue horizontal reference line at the mean mpg and a dotted regression line.

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 linetype en dehors d’aes().

library(ggplot2)

# Mean tooth length per dose, computed with base R (no tidyverse)
tg <- ToothGrowth
tg$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()

A ggplot2 line plot of mean tooth length against vitamin C dose drawn as a single dashed steel-blue line with points at each dose.

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 <- ToothGrowth
tg$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")

A ggplot2 line plot of mean tooth length by dose for two supplement groups: one solid and one dashed line, distinguished further by colour, with a top legend.

Mapper à la fois linetype 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 <- ToothGrowth
tg$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")

The two-group tooth length line plot restyled with scale_linetype_manual: an explicit solid line and dashed line in two chosen colours, teal and orange, with a top legend.

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

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.

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

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

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

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

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.

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

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 ?

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.

Leçons associées

Cette page vous a-t-elle été utile ?

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

Réutilisation

Citation

BibTeX
@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}
}
Veuillez citer ce travail comme suit :
“Types de lignes en R : valeurs lty et linetype ggplot2.” 2026. June 27. https://www.datanovia.com/learn/data-visualization/line-types-in-r.