Types de ligne dans ggplot2 (R)

Transformer une ligne en tirets, pointillés ou tiret-point — et styliser chaque groupe — en direct dans votre navigateur

Apprenez à changer les types de ligne en R avec ggplot2 — définissez un style unique avec linetype = “dashed”, associez un groupe à linetype pour que chaque ligne ait son propre style, et remplacez l’association avec scale_linetype_manual(). Modifiez et exécutez le code en direct, sans installation.

Date de publication

20 juin 2026

Modifié

7 juillet 2026

AstucePoints clés
  • R possède 7 types de ligne : 0 vide, 1 plein, 2 tirets, 3 pointillés, 4 tiret-point, 5 longs tirets, 6 double tiret — chacun désignable par nom ou numéro ("dashed" == 2).
  • Définissez un seul style pour toute une ligne en passant linetype = "dashed" à geom_line().
  • Stylisez chaque groupe automatiquement en associant un facteur à linetype à l’intérieur d’aes() — un type par groupe, plus une légende.
  • Combinez linetype avec colour (également associé dans aes()) pour que les groupes diffèrent à la fois par le style et la teinte.
  • Remplacez l’association automatique avec scale_linetype_manual(values = ...) pour choisir exactement quel groupe reçoit quel style.
  • Contrôlez l’épaisseur avec linewidth (ggplot2 ≥ 3.4 ; size dans les versions antérieures).
  • linetype fonctionne sur toutes les couches de ligne — geom_smooth(), geom_density(), geom_hline()/geom_vline()/geom_abline(), geom_segment().
  • Chaque graphique ci-dessous est rendu pour vous — puis ajustez n’importe quel exemple en direct dans le bac à sable.
Obtenez le livre — GGPlot2 Essentials (PDF)

Introduction

Changer le type d’une ligne — de plein à tirets, pointillés ou tiret-point — est l’un des moyens les plus rapides d’ajouter du sens à un graphique en courbes : distinguer une prévision des valeurs réelles, une ligne de référence des données, ou un groupe d’un autre sans s’appuyer uniquement sur la couleur. En R, ggplot2 contrôle cela via un attribut esthétique unique, linetype. Vous pouvez le définir comme valeur fixe sur une couche, l’associer à une variable de regroupement pour que chaque groupe obtienne son propre style automatiquement, ou attribuer les styles manuellement avec scale_linetype_manual(). Cette leçon parcourt les trois approches, ainsi que la référence complète des types de ligne et le contrôle de l’épaisseur — chaque figure est rendue 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 ayant reçu de la vitamine C à trois doses (dose : 0,5, 1 ou 2 mg/jour) via deux méthodes d’administration (supp : jus d’orange OJ ou acide ascorbique VC). Comme un graphique en courbes a besoin d’un point par valeur en x, chaque bloc résume d’abord ToothGrowth en moyennes de groupe en base R — aucun paquet supplémentaire, de sorte que chaque bloc s’exécute de manière autonome.

Les types de ligne disponibles en R

R reconnaît sept types de ligne, désignables par numéro (06) ou par nom. Le graphique ci-dessous les dessine tous à la fois pour vous offrir une référence visuelle. scale_linetype_identity() indique à ggplot2 de lire la colonne linetype littéralement (chaque valeur est le type de ligne, et non une catégorie à associer).

library(ggplot2)
# the 6 visible types (0 = blank is omitted from the reference)
lt <- data.frame(
  num  = 1:6,
  name = c("solid", "dashed", "dotted", "dotdash", "longdash", "twodash")
)
ggplot(lt, aes(x = 0, xend = 1, y = num, yend = num, linetype = name)) +
  geom_segment(linewidth = 1) +
  scale_linetype_identity() +
  scale_y_continuous(breaks = lt$num,
                     labels = paste0(lt$num, " = ", lt$name)) +
  labs(x = NULL, y = NULL,
       title = "R line types (1-6); 0 = blank") +
  theme_minimal()

Reference chart of the six visible ggplot2 line types — solid, dashed, dotted, dotdash, longdash, twodash — each drawn as a horizontal line labelled by name and number.

Définir un seul type de ligne sur geom_line()

Pour rendre toute une ligne en tirets, passez linetype à geom_line() comme constante (en dehors d’aes()). N’importe lequel des sept noms convient ici.

library(ggplot2)
# group means per dose, in base R (self-contained)
mt <- aggregate(len ~ dose, data = ToothGrowth, FUN = mean)
ggplot(mt, aes(x = dose, y = len)) +
  geom_line(linetype = "dashed", linewidth = 1, colour = "#3a86d4") +
  geom_point(size = 2, colour = "#3a86d4") +
  labs(x = "Dose (mg/day)", y = "Mean tooth length") +
  theme_minimal()

ggplot2 line plot of mean tooth length rising across three doses, drawn as a single dashed azure line with points at each dose.

Nom ou numéro — c’est pareil

Un type de ligne peut être donné par son nom ("dotted") ou par son numéro (3) — ils sont interchangeables. Les deux lignes ci-dessous sont stylisées de manière identique, l’une par nom et l’autre par numéro, afin que vous puissiez confirmer que "dotted" == 3.

library(ggplot2)
mt <- aggregate(len ~ dose, data = ToothGrowth, FUN = mean)
ggplot(mt, aes(x = dose, y = len)) +
  geom_line(aes(y = len + 0.4), linetype = "dotted", linewidth = 1, colour = "#3a86d4") +
  geom_line(aes(y = len - 0.4), linetype = 3,        linewidth = 1, colour = "grey50") +
  labs(x = "Dose (mg/day)", y = "Mean tooth length",
       title = "linetype = \"dotted\"  ==  linetype = 3") +
  theme_minimal()

Two overlapping ggplot2 lines of mean tooth length by dose, one styled with linetype = "dotted" and one with linetype = 3, drawn identically to show they are equivalent.

Changer les types de ligne automatiquement par groupe

Associez un facteur de regroupement à linetype à l’intérieur d’aes() et ggplot2 attribue un style différent à chaque groupe automatiquement — et ajoute une légende. Ici, chaque supplément (OJ, VC) obtient son propre type de ligne.

library(ggplot2)
# group means per dose AND supplement, in base R
mt <- aggregate(len ~ dose + supp, data = ToothGrowth, FUN = mean)
ggplot(mt, aes(x = dose, y = len, linetype = supp)) +
  geom_line(linewidth = 1) +
  geom_point(size = 2) +
  labs(x = "Dose (mg/day)", y = "Mean tooth length", linetype = "Supplement") +
  theme_minimal()

ggplot2 line plot of mean tooth length by dose with two lines — orange juice as a solid line and ascorbic acid as a dashed line — distinguished by line type with a legend.

Combiner type de ligne et couleur par groupe

Encoder un groupe à la fois avec le type de ligne et la couleur rend un graphique lisible en niveaux de gris et adapté au daltonisme. Associez le même facteur à linetype et colour, et utilisez une échelle viridis adaptée au daltonisme pour la couleur.

library(ggplot2)
mt <- aggregate(len ~ dose + supp, data = ToothGrowth, FUN = mean)
ggplot(mt, aes(x = dose, y = len, linetype = supp, colour = supp)) +
  geom_line(linewidth = 1) +
  geom_point(size = 2) +
  scale_colour_viridis_d() +
  labs(x = "Dose (mg/day)", y = "Mean tooth length",
       linetype = "Supplement", colour = "Supplement") +
  theme_minimal()

ggplot2 line plot of mean tooth length by dose with two lines distinguished by both line type and colourblind-safe viridis colour, one per supplement, with a combined legend.

Définir les types de ligne manuellement avec scale_linetype_manual()

Pour choisir exactement quel groupe reçoit quel style, ajoutez scale_linetype_manual() et passez un vecteur de types de ligne dans values =. Nommez le vecteur pour lier chaque style à un groupe précis quel que soit l’ordre.

library(ggplot2)
mt <- aggregate(len ~ dose + supp, data = ToothGrowth, FUN = mean)
ggplot(mt, aes(x = dose, y = len, linetype = supp)) +
  geom_line(linewidth = 1, colour = "#3a86d4") +
  geom_point(size = 2, colour = "#3a86d4") +
  scale_linetype_manual(values = c(OJ = "solid", VC = "longdash")) +
  labs(x = "Dose (mg/day)", y = "Mean tooth length", linetype = "Supplement") +
  theme_minimal()

ggplot2 line plot of mean tooth length by dose with orange juice as a solid line and ascorbic acid as a long-dashed line, assigned explicitly with scale_linetype_manual.

Contrôler l’épaisseur de la ligne

L’épaisseur est un attribut esthétique distinct : linewidth dans ggplot2 ≥ 3.4 (c’était size auparavant). Définissez-la comme constante sur la couche, ou associez-la dans aes() pour encoder une troisième variable. L’équivalent en base R est lwd.

library(ggplot2)
mt <- aggregate(len ~ dose, data = ToothGrowth, FUN = mean)
ggplot(mt, aes(x = dose, y = len)) +
  geom_line(linetype = "dotdash", linewidth = 1.5, colour = "#3a86d4") +
  geom_point(size = 3, colour = "#3a86d4") +
  labs(x = "Dose (mg/day)", y = "Mean tooth length") +
  theme_minimal()

ggplot2 line plot of mean tooth length by dose drawn as a thick dotdash azure line with linewidth set to 1.5.

Types de ligne sur d’autres couches

linetype ne se limite pas à geom_line() — il stylise n’importe quelle couche traçant une ligne. Un usage courant est une ligne de référence en tirets : ici un geom_hline() marque la moyenne globale pour que la ligne de chaque groupe puisse être lue par rapport à elle. Cela s’applique de même à geom_smooth(), geom_density(), geom_vline(), geom_abline() et geom_segment().

library(ggplot2)
mt <- aggregate(len ~ dose + supp, data = ToothGrowth, FUN = mean)
ggplot(mt, aes(x = dose, y = len, colour = supp)) +
  geom_line(linewidth = 1) +
  geom_hline(yintercept = mean(ToothGrowth$len),
             linetype = "dashed", colour = "grey50") +
  scale_colour_viridis_d() +
  labs(x = "Dose (mg/day)", y = "Mean tooth length", colour = "Supplement") +
  theme_minimal()

ggplot2 line plot of mean tooth length per supplement by dose, with a dashed grey horizontal reference line marking the overall mean across all groups.

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 des styles de ligne Matplotlib arrive dans la série Python. Un guide lty/lwd en base-R arrive dans la série base-R.

🟢 Avec un agent IA

Demandez à Prova « comment rendre OJ en pointillés et VC en double tiret dans ce graphique ? » — 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

Passez linetype = "dashed" comme constante à geom_line(), en dehors d’aes() — par exemple geom_line(linetype = "dashed"). Les autres styles nommés sont "solid", "dotted", "dotdash", "longdash" et "twodash".

Il existe 7 types de ligne désignables par numéro 06 : 0 vide, 1 plein, 2 tirets, 3 pointillés, 4 tiret-point, 5 longs tirets, 6 double tiret. Le numéro et le nom sont interchangeables, donc linetype = 2 revient au même que linetype = "dashed".

Associez votre facteur de regroupement à linetype à l’intérieur d’aes() — par exemple aes(linetype = supp) — et ggplot2 attribue automatiquement un style distinct par groupe et ajoute une légende. Associez aussi le même facteur à colour pour rendre le graphique lisible en niveaux de gris et adapté au daltonisme.

Ajoutez scale_linetype_manual(values = ...) et passez un vecteur de types de ligne. Nommez le vecteur pour lier chaque style à un groupe précis quel que soit l’ordre, par exemple scale_linetype_manual(values = c(OJ = "solid", VC = "longdash")).

L’épaisseur est un attribut esthétique distinct, linewidth (dans ggplot2 ≥ 3.4 ; c’était size dans les versions antérieures). Définissez-la comme constante sur la couche, par exemple geom_line(linewidth = 1.5), ou associez-la à l’intérieur d’aes() pour encoder une troisième variable.

Testez vos connaissances

Complétez l’appel à geom_line() pour que la ligne soit en tirets avec une épaisseur (linewidth) de 1.5.

# Pass linetype = "dashed" and linewidth = 1.5 to geom_line()
library(ggplot2) mt <- aggregate(len ~ dose, data = ToothGrowth, FUN = mean) ggplot(mt, aes(x = dose, y = len)) + geom_line(linetype = "dashed", linewidth = 1.5) + theme_minimal()
library(ggplot2)
mt <- aggregate(len ~ dose, data = ToothGrowth, FUN = mean)
ggplot(mt, aes(x = dose, y = len)) +
  geom_line(linetype = "dashed", linewidth = 1.5) +
  theme_minimal()

Conclusion

Vous avez découvert les sept types de ligne de R, défini un style fixe sur geom_line() (par nom et par numéro), laissé ggplot2 styliser chaque groupe automatiquement en associant un facteur à linetype, combiné le type de ligne avec une couleur adaptée au daltonisme, attribué des styles explicitement avec scale_linetype_manual(), et contrôlé l’épaisseur avec linewidth. Ensuite, construisez les graphiques en courbes eux-mêmes dans la leçon line plot, et explorez le reste de la grammaire de ggplot2.

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 = {Types de ligne dans ggplot2 (R)},
  date = {2026-06-20},
  url = {https://www.datanovia.com/learn/data-visualization/ggplot2/line-types},
  langid = {fr}
}
Veuillez citer ce travail comme suit :
“Types de ligne dans ggplot2 (R).” 2026. June 20. https://www.datanovia.com/learn/data-visualization/ggplot2/line-types.