Tracez, groupez et chronologisez un graphique en courbes ggplot2 — en direct dans votre navigateur
Apprenez à construire un graphique en courbes avec R et ggplot2 — reliez des points ordonnés avec geom_line(), ajoutez des points, changez le type et la couleur de ligne, tracez plusieurs groupes et affichez une série temporelle avec des dates en abscisse. Modifiez et exécutez le code en direct, sans aucune installation.
Date de publication
20 juin 2026
Modifié
8 juillet 2026
AstucePoints clés
Un graphique en courbes relie des points de données ordonnés pour montrer comment une valeur évolue — au fil du temps, ou le long d’une catégorie ordonnée.
Dans ggplot2, vous associez une variable ordonnée à x et les valeurs à y, puis vous tracez avec geom_line().
Pour une série unique issue d’un seul groupe, définissez group = 1 afin que ggplot2 sache que les points forment une seule ligne.
Superposez geom_point() sur geom_line() pour marquer chaque observation.
Contrôlez la ligne avec linetype (par exemple "dashed"), colour et linewidth.
Tracez plusieurs groupes en associant la variable de regroupement à colour (et/ou linetype) ; utilisez une palette adaptée au daltonisme scale_colour_viridis_d().
Pour une série temporelle, placez une colonne Date sur x — ggplot2 met l’axe à l’échelle automatiquement.
Chaque graphique ci-dessous est généré pour vous — modifiez ensuite n’importe quel exemple en direct dans le bac à sable.
Un graphique en courbes (ou courbe) est le moyen le plus rapide de montrer comment une valeur évolue le long d’une dimension ordonnée — le plus souvent le temps. En R, ggplot2 en trace un avec une seule couche — geom_line() — et facilite l’ajout de points, le changement de style de ligne, le tracé de plusieurs séries à la fois et l’affichage de dates en abscisse. Cette leçon en construit un pas à pas ; les figures sont générées ici même, et vous pouvez réexécuter ou modifier chacune d’elles en direct.
Nous utilisons deux jeux de données intégrés. economics est une série temporelle économique mensuelle des États-Unis — nous traçons le taux d’épargne personnelle (psavert) et des mesures de durée du chômage par rapport à la colonne date. ToothGrowth enregistre la longueur des cellules odontoblastes (len) chez des cobayes recevant de la vitamine C à trois doses (dose : 0.5, 1 ou 2 mg/jour) selon deux modes d’administration (supp : jus d’orange OJ ou acide ascorbique VC) — nous le résumons à une moyenne de groupe par dose pour tracer une ligne catégorielle.
Construire un graphique en courbes de base
Associez une variable ordonnée à x et les valeurs à y, puis ajoutez une seule couche de ligne. Lorsque tous les points appartiennent à une série, définissez group = 1 pour que ggplot2 les relie en une seule ligne plutôt que de ne rien tracer.
library(ggplot2)# mean tooth length per dose, computed in-block with base aggregate()tg_mean <-aggregate(len ~ dose, data = ToothGrowth, FUN = mean)ggplot(tg_mean, aes(x =factor(dose), y = len, group =1)) +geom_line(colour ="#3a86d4", linewidth =1) +labs(x ="Dose (mg/day)", y ="Mean tooth length") +theme_minimal()
Ajouter des points à la ligne
Une ligne nue masque l’emplacement réel des observations. Superposez geom_point() sur geom_line() pour marquer chaque point de données — une valeur par défaut courante et lisible pour les petites séries.
library(ggplot2)tg_mean <-aggregate(len ~ dose, data = ToothGrowth, FUN = mean)ggplot(tg_mean, aes(x =factor(dose), y = len, group =1)) +geom_line(colour ="#3a86d4", linewidth =1) +geom_point(colour ="#3a86d4", size =3) +labs(x ="Dose (mg/day)", y ="Mean tooth length") +theme_minimal()
Changer le type et la couleur de ligne
Définissez linetype pour une ligne "dashed", "dotted" ou "longdash", et colour pour n’importe quelle couleur. Ce sont ici des attributs esthétiques fixes, ils vont donc à l’extérieur d’aes() (une constante, pas une association).
library(ggplot2)tg_mean <-aggregate(len ~ dose, data = ToothGrowth, FUN = mean)ggplot(tg_mean, aes(x =factor(dose), y = len, group =1)) +geom_line(colour ="#3a86d4", linetype ="dashed", linewidth =1) +geom_point(colour ="#3a86d4", size =3) +labs(x ="Dose (mg/day)", y ="Mean tooth length") +theme_minimal()
Tracer plusieurs groupes
Pour tracer une ligne par groupe, associez la variable de regroupement à colour (et éventuellement linetype pour un second repère adapté à l’impression). ggplot2 divise les données et trace une ligne pour chaque niveau. Utilisez une palette adaptée au daltonisme comme viridis afin que la figure reste lisible pour tout le monde.
library(ggplot2)# mean length per dose AND supplement, in-block with base aggregate()tg_grp <-aggregate(len ~ dose + supp, data = ToothGrowth, FUN = mean)ggplot(tg_grp, aes(x =factor(dose), y = len, colour = supp,linetype = supp, group = supp)) +geom_line(linewidth =1) +geom_point(size =3) +scale_colour_viridis_d() +labs(x ="Dose (mg/day)", y ="Mean tooth length",colour ="Supplement", linetype ="Supplement") +theme_minimal()
geom_line ou geom_path ou geom_step
geom_line() relie les points dans l’ordre de la valeur x. geom_path() les relie dans l’ordre où ils apparaissent dans les données (utile lorsque le chemin lui-même compte). geom_step() trace un escalier, maintenant chaque valeur jusqu’au x suivant — le bon choix pour une série qui change par sauts discrets.
library(ggplot2)tg_mean <-aggregate(len ~ dose, data = ToothGrowth, FUN = mean)ggplot(tg_mean, aes(x =factor(dose), y = len, group =1)) +geom_step(colour ="#3a86d4", linewidth =1) +geom_point(colour ="#3a86d4", size =3) +labs(x ="Dose (mg/day)", y ="Mean tooth length") +theme_minimal()
x numérique : continu vs catégoriel
Lorsque x est un nombre, ggplot2 le traite comme un axe continu et espace les points selon leur valeur. Enveloppez-le dans factor() pour obtenir un axe catégoriel avec une graduation uniformément espacée par niveau. Les deux sont valides — choisissez celui qui correspond à vos données. Ici, dose tracée comme un nombre continu conserve l’espacement réel (0.5, 1, 2) :
library(ggplot2)tg_mean <-aggregate(len ~ dose, data = ToothGrowth, FUN = mean)ggplot(tg_mean, aes(x = dose, y = len)) +geom_line(colour ="#3a86d4", linewidth =1) +geom_point(colour ="#3a86d4", size =3) +labs(x ="Dose (mg/day)", y ="Mean tooth length") +theme_minimal()
Série temporelle : des dates en abscisse
Pour une série temporelle, placez une colonne Date sur x et ggplot2 met l’axe à l’échelle avec des intervalles de dates pertinents automatiquement — aucune conversion manuelle nécessaire. Nous utilisons les données intégrées economics (indicateurs mensuels des États-Unis) et traçons le taux d’épargne personnelle au fil du temps.
library(ggplot2)ggplot(economics, aes(x = date, y = psavert)) +geom_line(colour ="#3a86d4", linewidth =0.8) +labs(x ="Date", y ="Personal savings rate (%)") +theme_minimal()
Plusieurs séries temporelles
Pour superposer plusieurs séries, réorganisez les données pour que chacune ait une étiquette et associez cette étiquette à colour. Ici, nous traçons la durée médiane et moyenne du chômage ensemble à partir d’economics, en empilant les deux colonnes en un seul tableau de données long avec la fonction de base rbind() afin qu’une seule couche geom_line() trace les deux.
library(ggplot2)# stack two measures into one long frame, in-block with base rbind()econ_long <-rbind(data.frame(date = economics$date, weeks = economics$uempmed, series ="Median"),data.frame(date = economics$date, weeks = economics$unemploy /1000, series ="Unemployed (thousands)"))ggplot(econ_long, aes(x = date, y = weeks, colour = series)) +geom_line(linewidth =0.8) +scale_colour_viridis_d(end =0.85) +labs(x ="Date", y ="Value", colour ="Series") +theme_minimal()
Associer la largeur de ligne à une variable
linewidth peut être une constante fixe (à l’extérieur d’aes()) ou associée à une variable à l’intérieur d’aes() afin que la ligne s’épaississe avec une troisième quantité. L’associer ajoute une légende ; la définir comme constante stylise simplement la ligne. Ici, nous définissons une ligne plus épaisse constante pour la mise en valeur :
library(ggplot2)tg_mean <-aggregate(len ~ dose, data = ToothGrowth, FUN = mean)ggplot(tg_mean, aes(x =factor(dose), y = len, group =1)) +geom_line(colour ="#3a86d4", linewidth =2) +geom_point(colour ="#3a86d4", size =3) +labs(x ="Dose (mg/day)", y ="Mean tooth length") +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 de graphique en courbes avec matplotlib arrive dans la série Python.
🟢 Avec un agent IA
Demandez à Prova« pourquoi mon geom_line() à série unique ne trace-t-il aucune ligne tant que je n’ajoute pas group = 1 ? » — 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
NotePourquoi mon geom_line() ggplot2 ne trace-t-il aucune ligne pour une série unique ?
Avec un seul groupe, ggplot2 ne sait pas que les points appartiennent à la même ligne, il ne trace donc rien. Définissez group = 1 à l’intérieur d’aes() — par exemple aes(x = factor(dose), y = len, group = 1) — pour les relier en une seule ligne.
NoteComment ajouter des points à un graphique en courbes ggplot2 ?
Superposez geom_point() sur geom_line() dans le même graphique — par exemple, ajoutez + geom_point(size = 3). Chaque observation reçoit alors un marqueur sur la ligne.
NoteComment faire une ligne tiretée ou pointillée dans ggplot2 ?
Définissez linetype à l’intérieur de geom_line() sur "dashed", "dotted" ou "longdash". Comme il s’agit d’un style fixe et non d’une association de données, placez-le à l’extérieur d’aes(), par exemple geom_line(linetype = "dashed").
NoteQuelle est la différence entre geom_line, geom_path et geom_step ?
geom_line() relie les points dans l’ordre de la valeur x, geom_path() les relie dans l’ordre où ils apparaissent dans les données, et geom_step() trace un escalier qui maintient chaque valeur jusqu’au x suivant. Utilisez geom_step() pour les séries qui changent par sauts discrets.
NoteComment tracer une série temporelle avec des dates dans ggplot2 ?
Placez une colonne Date sur x (par exemple aes(x = date, y = psavert)) et ggplot2 met l’axe à l’échelle avec des intervalles de dates pertinents automatiquement — aucune conversion manuelle nécessaire.
Testez vos connaissances
ImportantExercice : marquer chaque observation
Complétez le code pour que la ligne affiche aussi un point à chaque observation.
# Add geom_point(), e.g. geom_point(size = 3)
library(ggplot2)
tg_mean <- aggregate(len ~ dose, data = ToothGrowth, FUN = mean)
ggplot(tg_mean, aes(x = factor(dose), y = len, group = 1)) +
geom_line(colour = "#3a86d4", linewidth = 1) +
geom_point(size = 3)
library(ggplot2)tg_mean <-aggregate(len ~ dose, data = ToothGrowth, FUN = mean)ggplot(tg_mean, aes(x =factor(dose), y = len, group =1)) +geom_line(colour ="#3a86d4", linewidth =1) +geom_point(size =3)
Conclusion
Vous avez construit un graphique en courbes ggplot2, ajouté des points, changé le type et la couleur de ligne, tracé plusieurs groupes avec une palette adaptée au daltonisme, dessiné un escalier avec geom_step(), géré les axes x numériques vs catégoriels, et affiché des séries temporelles uniques et multiples avec des dates en abscisse. Ensuite, explorez le nuage de points pour les relations entre deux variables numériques.
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 = {Graphique en courbes avec R : le guide ggplot2},
date = {2026-06-20},
url = {https://www.datanovia.com/learn/data-visualization/ggplot2/line-plot},
langid = {fr}
}