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.
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 (0–6) 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()
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()
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()
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 Rmt <-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()
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()
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.
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()
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()
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
NoteComment rendre une ligne en tirets dans ggplot2 ?
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".
NoteQuels sont les numéros de type de ligne en R ?
Il existe 7 types de ligne désignables par numéro 0–6 : 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".
NoteComment donner un type de ligne différent à chaque groupe ?
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.
NoteComment choisir quel groupe reçoit quel type de ligne ?
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")).
NoteComment rendre une ligne ggplot2 plus épaisse ?
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
ImportantExercice : rendre la ligne en tirets et épaisse
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.
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.
@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}
}