ggplot ligne de tendance : geom_smooth en R

Ajustez des lignes de tendance loess, lm et gam et contrôlez la bande de confiance

Ajoutez une ligne lissée ou une courbe de tendance à un graphique ggplot2 avec geom_smooth() — choisissez la méthode loess, lm ou gam, affichez ou masquez la bande de confiance, ajustez une ligne par groupe, et contrôlez le span, la formule, la couleur et le type de ligne.

Date de publication

27 juin 2026

Modifié

7 juillet 2026

AstucePoints clés
  • geom_smooth() ajoute une ligne de tendance ajustée et une bande de confiance à n’importe quel graphique ggplot2.
  • La méthode par défaut est loess (une courbe locale) pour les petits jeux de données et gam pour les grands.
  • Définissez method = "lm" pour une droite de régression, "loess" pour une courbe, "gam" pour une spline lissée.
  • se = FALSE supprime la bande de confiance grise.
  • Associez une variable de regroupement à color pour ajuster une ligne lissée par groupe.
  • Contrôlez l’ondulation avec span (loess) ou une formula personnalisée (par exemple un polynôme).
Obtenez le livre — GGPlot2 Essentials (PDF)

Introduction

Une ligne lissée résume la tendance cachée dans un nuage de points — elle répond à la question « la relation monte-t-elle, descend-elle ou se courbe-t-elle ? » d’un seul coup d’œil. Dans ggplot2, une seule couche le fait : geom_smooth() ajuste un modèle à vos données et dessine la ligne ajustée plus une bande de confiance.

Cette leçon commence avec le lisseur par défaut, puis parcourt chaque méthode (loess, lm, gam), en activant ou désactivant la bande de confiance, en ajustant une ligne distincte par groupe, et en contrôlant la forme de la courbe. Nous utilisons le jeu de données intégré mtcars — le poids des voitures (wt) en fonction des miles par gallon (mpg).

Ajouter une ligne lissée par défaut

Ajoutez geom_smooth() au-dessus d’une couche de points. Sans argument, elle choisit une méthode pour vous — loess pour moins de 1 000 points — et ombre la bande de confiance à 95 % en gris.

library(ggplot2)
ggplot(mtcars, aes(x = wt, y = mpg)) +
  geom_point(color = "#3a86d4") +
  geom_smooth() +
  theme_minimal()

ggplot2 scatter plot of car weight versus miles per gallon with a blue loess smooth line and a grey confidence band showing a downward curve.

La ligne trace la tendance locale ; la bande montre où la vraie moyenne est susceptible de se situer. Les voitures plus lourdes obtiennent clairement moins de miles par gallon.

Choisir la méthode de lissage

L’argument method choisit le modèle derrière la ligne. Les trois auxquels vous aurez le plus souvent recours :

  • "lm" — une droite de régression linéaire.
  • "loess" — une régression locale qui se courbe avec les données (la méthode par défaut pour les petits jeux de données).
  • "gam" — un modèle additif généralisé, une spline lissée qui s’adapte aux grands jeux de données.

Voici lm pour une tendance en ligne droite.

library(ggplot2)
ggplot(mtcars, aes(x = wt, y = mpg)) +
  geom_point(color = "#3a86d4") +
  geom_smooth(method = "lm") +
  theme_minimal()

ggplot2 scatter plot of weight versus mpg with a straight blue linear regression line and grey confidence band.

Remplacez par "loess" pour une courbe qui suit la structure locale.

library(ggplot2)
ggplot(mtcars, aes(x = wt, y = mpg)) +
  geom_point(color = "#3a86d4") +
  geom_smooth(method = "loess") +
  theme_minimal()

ggplot2 scatter plot of weight versus mpg with a curved blue loess smooth line and grey confidence band.

Et "gam" pour une spline lissée (le même style de formula que ggplot2 utilise pour les grands jeux de données).

library(ggplot2)
ggplot(mtcars, aes(x = wt, y = mpg)) +
  geom_point(color = "#3a86d4") +
  geom_smooth(method = "gam", formula = y ~ s(x)) +
  theme_minimal()

ggplot2 scatter plot of weight versus mpg with a smooth blue gam spline line and grey confidence band.

Supprimer la bande de confiance

La bande grise est l’intervalle de confiance à 95 % de la ligne ajustée. Supprimez-la avec se = FALSE lorsque vous voulez une ligne de tendance épurée et rien d’autre.

library(ggplot2)
ggplot(mtcars, aes(x = wt, y = mpg)) +
  geom_point(color = "#3a86d4") +
  geom_smooth(method = "lm", se = FALSE) +
  theme_minimal()

ggplot2 scatter plot of weight versus mpg with a straight blue regression line and no confidence band.

Ajuster une ligne lissée par groupe

Associez une variable de regroupement à color dans l’aes() de premier niveau et geom_smooth() ajuste une ligne distincte par groupe. Enveloppez la colonne numérique du nombre de cylindres (cyl) dans factor() pour que ggplot2 la traite comme des catégories discrètes, et ajoutez une palette viridis adaptée au daltonisme.

library(ggplot2)
ggplot(mtcars, aes(x = wt, y = mpg, color = factor(cyl))) +
  geom_point() +
  geom_smooth(method = "lm", se = FALSE) +
  scale_color_viridis_d() +
  labs(color = "Cylinders") +
  theme_minimal()

ggplot2 scatter plot of weight versus mpg with points and a separate straight trend line for each cylinder group, coloured with a viridis palette.

Pour ajuster une seule ligne à travers tous les points tout en les colorant par groupe, déplacez color hors de l’aes() global et placez-le uniquement dans geom_point().

library(ggplot2)
ggplot(mtcars, aes(x = wt, y = mpg)) +
  geom_point(aes(color = factor(cyl))) +
  geom_smooth(method = "lm", se = FALSE, color = "#3a86d4") +
  scale_color_viridis_d() +
  labs(color = "Cylinders") +
  theme_minimal()

ggplot2 scatter plot of weight versus mpg with points coloured by cylinder group but a single shared straight trend line.

Contrôler la courbe : span et formula

Pour un lisseur loess, span définit la quantité de données que chaque ajustement local utilise — plus petit est plus ondulé, plus grand est plus lissé. Comparez un span serré avec un span large.

library(ggplot2)
ggplot(mtcars, aes(x = wt, y = mpg)) +
  geom_point(color = "#3a86d4") +
  geom_smooth(method = "loess", span = 0.3, se = FALSE) +
  theme_minimal()

ggplot2 scatter plot of weight versus mpg with a wiggly loess line from a small span value.

Pour un ajustement lm, passez une formula pour ajuster un polynôme au lieu d’une ligne droite — ici un polynôme de degré 3.

library(ggplot2)
ggplot(mtcars, aes(x = wt, y = mpg)) +
  geom_point(color = "#3a86d4") +
  geom_smooth(method = "lm", formula = y ~ poly(x, 3), se = FALSE) +
  theme_minimal()

ggplot2 scatter plot of weight versus mpg with a curved degree-three polynomial regression line.

Styliser la ligne

Changez la color, la linewidth et le linetype de la ligne à l’intérieur de geom_smooth(), et la couleur de la bande avec fill. Ces réglages définissent un rendu fixe (en dehors de aes()).

library(ggplot2)
ggplot(mtcars, aes(x = wt, y = mpg)) +
  geom_point(color = "#3a86d4") +
  geom_smooth(
    method = "lm",
    color = "#d1495b", fill = "#f4c7cd",
    linewidth = 1.2, linetype = "dashed"
  ) +
  theme_minimal()

ggplot2 scatter plot of weight versus mpg with a thick dashed dark-orange regression line and a light-orange confidence band.

Essayez en direct

Les graphiques ci-dessus ont été rendus lors de la génération du site. 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 lignes de tendance avec matplotlib/seaborn arrive bientôt dans la série Python.

🟢 Avec un agent IA

Demandez à Prova « dois-je utiliser lm ou loess pour cette relation ? » — elle répond avec du code que vous pouvez exécuter, donc l’explication est reproductible. The runtime is the judge. Demander à Prova →

Problèmes courants

  • « geom_smooth() using method = ‘gam’ and formula ‘y ~ s(x)’ » s’affiche comme un message, pas une erreur. ggplot2 vous indique simplement quel lisseur et quelle formule il a choisis. Définissez method et formula explicitement pour le faire taire, ou conservez message: false dans vos options de bloc.
  • Une ligne distincte par groupe alors que vous en vouliez une seule. Associer color dans l’aes() global groupe aussi le lisseur. Déplacez color dans geom_point(aes(...)) pour que seuls les points soient colorés et qu’une seule ligne soit ajustée.
  • « span too small » / un avertissement sur un nombre de points trop faible. Un span petit (ou un polynôme de degré élevé) sur un petit jeu de données peut ne pas s’ajuster. Augmentez le span vers 0.75 (la valeur par défaut) ou utilisez un degré de polynôme plus faible.

Questions fréquentes

Ajoutez geom_smooth() au-dessus de votre graphique, par exemple ggplot(mtcars, aes(wt, mpg)) + geom_point() + geom_smooth(). Sans argument, elle ajuste une courbe loess (pour les petits jeux de données) et dessine une bande de confiance à 95 %.

Définissez la méthode sur modèle linéaire : geom_smooth(method = "lm"). Utilisez method = "loess" pour une courbe locale ou method = "gam" pour une spline lissée sur les grands jeux de données.

Passez se = FALSE à geom_smooth(), par exemple geom_smooth(method = "lm", se = FALSE). Cela dessine uniquement la ligne ajustée sans bande grise.

lm ajuste une ligne droite (régression linéaire) ; loess ajuste une courbe locale flexible, la méthode par défaut sous ~1 000 points ; gam ajuste une spline lissée qui s’adapte aux grands jeux de données et est la méthode par défaut au-delà de ce seuil.

Associez la variable de regroupement à color dans l’aes() de premier niveau, par exemple aes(wt, mpg, color = factor(cyl)). ggplot2 ajuste alors une ligne geom_smooth() par groupe de couleur. Pour conserver une seule ligne partagée, déplacez plutôt color dans geom_point().

Testez vos connaissances

Complétez le code pour que le nuage de points inclue une ligne de tendance droite (lm) sans bande de confiance.

# Use geom_smooth() with method = "lm" and turn off the band with se = FALSE
library(ggplot2) ggplot(mtcars, aes(x = wt, y = mpg)) + geom_point() + geom_smooth(method = "lm", se = FALSE)
library(ggplot2)
ggplot(mtcars, aes(x = wt, y = mpg)) +
  geom_point() +
  geom_smooth(method = "lm", se = FALSE)

Vérification rapide : quel argument ajuste une courbe qui se plie selon la structure locale plutôt qu’une ligne droite ?

method = "loess". Elle ajuste une régression locale qui suit la forme des données, tandis que method = "lm" force une ligne droite.

Conclusion

Vous avez ajouté une courbe de tendance lissée avec geom_smooth(), basculé entre les méthodes loess, lm et gam, activé ou désactivé la bande de confiance avec se, ajusté une ligne par groupe avec color, et façonné la courbe avec span, formula et le style. Ensuite, construisez le graphique sous-jacent dans la leçon nuage de points et ajoutez des lignes de référence fixes.

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 lors de la génération du site (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 = {ggplot ligne de tendance : geom\_smooth en R},
  date = {2026-06-27},
  url = {https://www.datanovia.com/learn/data-visualization/ggplot2/smooth-line},
  langid = {fr}
}
Veuillez citer ce travail comme suit :
“ggplot ligne de tendance : geom_smooth en R.” 2026. June 27. https://www.datanovia.com/learn/data-visualization/ggplot2/smooth-line.