ggfortify : des graphiques ggplot2 en une ligne pour modèles et séries temporelles en R

autoplot() transforme les objets lm, ACP, regroupement et séries temporelles en figures ggplot2

Data Visualization

Apprenez à utiliser ggfortify en R — la fonction générique autoplot() qui dessine des figures ggplot2 pour les objets courants : diagnostics de modèle linéaire, ACP (prcomp), regroupement k-means et séries temporelles. Une seule fonction, des graphiques prêts à publier, et chaque figure est produite à partir de vrai code R à copier-coller.

Auteur·rice
Date de publication

8 juillet 2026

Modifié

16 juillet 2026

AstuceCe que vous allez apprendre
  • Ce qu’est autoplot() — une fonction générique qui reconnaît la classe de votre objet et dessine la figure ggplot2 qui lui convient.
  • Les quatre cas du quotidien : diagnostics de modèle linéaire, ACP (prcomp), regroupement k-means et séries temporelles — chacun en une seule ligne.
  • Comment styliser le résultat comme n’importe quel ggplot (+ theme_minimal(), couleurs de la marque, viridis) car autoplot() renvoie un objet ggplot normal.
  • Quand aller au-delà de ggfortify — pour des figures d’ACP/de regroupement de qualité publication, utilisez factoextra, et pour des courbes de survie cliniques, utilisez survminer. ggfortify est la solution rapide en une ligne ; les deux autres donnent la figure finie.

Vous avez un lm ajusté, un résultat prcomp, un objet kmeans ou un ts — et vous voulez un graphique rapide et soigné sans écrire un appel ggplot() à partir de zéro. C’est exactement à ça que sert ggfortify. Il étend ggplot2 avec une seule fonction générique, autoplot(), qui inspecte la classe de ce que vous lui passez et dessine une figure ggplot2 pertinente. Comme la valeur de retour est un ggplot ordinaire, vous pouvez continuer à empiler des couches, des thèmes et des échelles par-dessus.

Tout ce qui suit est produit à partir de vrai code R. Vous n’avez besoin que de ggfortify (qui charge ggplot2 pour vous).

Graphiques de diagnostic d’un modèle linéaire

Le cas d’usage classique : vous ajustez un modèle et vous voulez les quatre diagnostics de régression standards — résidus vs valeurs ajustées, un Q-Q plot normal, scale-location et résidus vs effet de levier. R de base vous les donne avec plot(model), mais sous forme de quatre panneaux base-graphics séparés. autoplot() les renvoie comme une seule figure ggplot2 que vous pouvez habiller d’un thème.

Nous ajustons un modèle simple sur le jeu de données intégré iris, puis nous laissons autoplot() faire le reste. Passer colour et smooth.colour recolore les points et les courbes de lissage loess :

library(ggfortify)

model <- lm(Petal.Width ~ Petal.Length, data = iris)

autoplot(model, colour = "#3a86d4", smooth.colour = "#fb5607") +
  theme_minimal()

A 2x2 grid of ggplot2 linear-model diagnostics — residuals vs fitted, normal Q-Q, scale-location, and residuals vs leverage — drawn by ggfortify autoplot() with blue points and an orange smoother.

Lisez-les comme d’habitude : une courbe de lissage rouge plate sur résidus vs valeurs ajustées signale l’absence de non-linéarité évidente, des points qui épousent la diagonale du Q-Q plot indiquent des résidus à peu près normaux, et aucun point isolé à fort effet de levier sur le dernier panneau signifie qu’aucune observation ne domine à elle seule l’ajustement. Ici, l’important n’est pas l’interprétation — c’est que vous avez obtenu tout le panneau de diagnostic, mis en forme par ggplot2, en un seul appel. Vous en voulez un sous-ensemble ? autoplot(model, which = 1:3, ncol = 3) sélectionne et dispose les panneaux voulus.

autoplot() gère les objets glm de la même manière — remplacez lm() par glm() et vous obtenez la même grille de diagnostic.

ACP : graphique des scores avec les charges des variables

L’analyse en composantes principales (ACP) est le cas que ggfortify rend vraiment agréable. Lancez prcomp(), passez le résultat à autoplot(), et fournissez le data frame d’origine ainsi que la colonne de regroupement pour que les points puissent être colorés — puis ajoutez loadings = TRUE pour superposer les flèches des variables (un biplot).

library(ggfortify)

pca <- prcomp(iris[, -5], scale. = TRUE)

autoplot(
  pca, data = iris, colour = "Species",
  loadings = TRUE, loadings.label = TRUE,
  loadings.colour = "grey40", loadings.label.colour = "grey30"
) +
  scale_color_viridis_d() +
  theme_minimal()

A PCA biplot of iris drawn by ggfortify autoplot(): flower samples coloured by species across PC1 (about 73%) and PC2 (about 23%), with grey loading arrows for the four measurements.

Les étiquettes des axes vous donnent le gain de la projection : PC1 capture environ 73 % de la variance et PC2 environ 23 %, donc cette image plate en 2-D conserve à peu près 96 % de l’information contenue dans les quatre mesures d’origine. Setosa (un coin) se sépare nettement, tandis que versicolor et virginica sont plus proches et se chevauchent en partie. Les flèches de charges montrent pourquoi : la longueur et la largeur des pétales pointent presque dans la même direction le long de PC1, elles portent donc l’essentiel de la dispersion qui écarte les espèces.

Note

Conseil du fondateur — pour une figure d’ACP de qualité publication, utilisez factoextra. autoplot() donne l’aperçu rapide. Quand vous voulez la figure finie — un graphique des éboulis (scree plot), un cercle des corrélations des variables annoté, des ellipses de confiance par groupe, et une coloration par qualité/contribution — tournez-vous vers les fviz_pca_ind() / fviz_pca_biplot() de factoextra, conçus exactement pour ça. Voir la leçon Analyse en composantes principales.

Regroupement k-means : colorer les points et tracer les cadres de regroupement

kmeans() renvoie les affectations de regroupement mais jette les données, donc autoplot() a besoin que vous lui repassiez data =. Il projette sur les deux premières composantes principales, colore les points par regroupement et — avec frame = TRUE — trace une enveloppe autour de chaque groupe.

Nous fixons une graine pour que le regroupement soit reproductible, puis nous regroupons les 50 États américains de USArrests en trois groupes :

library(ggfortify)

set.seed(123)
km <- kmeans(USArrests, centers = 3)

autoplot(km, data = USArrests, frame = TRUE) +
  scale_color_viridis_d() +
  scale_fill_viridis_d() +
  theme_minimal()

A ggplot2 cluster plot from ggfortify autoplot() showing US states projected onto two principal components, coloured into three k-means clusters with shaded convex-hull frames.

Chaque couleur est un regroupement et chaque enveloppe ombrée est son frame ; les États se répartissent le long de PC1, qui pour USArrests non normalisé est dominée par le taux Assault, si bien que les regroupements suivent grosso modo les États à criminalité faible, moyenne et élevée. ggfortify comprend aussi le package clusterautoplot() accepte directement les objets pam(), clara() et fanny(), et comme ceux-ci conservent les données d’origine, vous n’avez même pas besoin de passer data =.

Note

Conseil du fondateur — pour les figures de regroupement que vous allez livrer, utilisez factoextra. fviz_cluster() vous donne la même idée avec des points étiquetés, des ellipses par regroupement et un contrôle complet du thème, et fviz_nbclust() vous aide à choisir le nombre de regroupements dès le départ. Voir la leçon Regroupement k-means.

Séries temporelles : tracer un objet ts en une ligne

Passez un objet ts à autoplot() et il dessine un vrai graphique en courbes indexé par le temps — sans avoir à le convertir d’abord en data frame. L’argument ts.colour recolore la courbe :

library(ggfortify)

autoplot(AirPassengers, ts.colour = "#3a86d4") +
  labs(x = "Year", y = "Monthly air passengers (thousands)") +
  theme_minimal()

A ggplot2 line chart from ggfortify autoplot() of the AirPassengers series, monthly airline totals from 1949 to 1960 rising with a repeating seasonal wave.

La série intégrée AirPassengers (totaux mensuels du trafic aérien, 1949–1960) présente à la fois une nette tendance à la hausse et une vague saisonnière annuelle qui se répète, dont l’amplitude croît avec le temps — la forme d’école pour un exemple de décomposition. La même fonction générique autoplot() rend aussi beaucoup de classes de séries temporelles voisines, dont la sortie de forecast::forecast(), les séries zoo/xts, les décompositions stl() et les détections de ruptures changepoint/strucchange — une seule fonction, tout l’écosystème.

Courbes de survie : la solution en une ligne, puis la figure clinique

ggfortify reconnaît aussi les objets survival::survfit(), donc une courbe de Kaplan-Meier tient en une ligne :

library(ggfortify)
library(survival)

fit <- survfit(Surv(time, status) ~ sex, data = lung)

autoplot(fit) +
  scale_color_viridis_d() +
  scale_fill_viridis_d() +
  labs(x = "Time (days)", y = "Survival probability") +
  theme_minimal()

A ggplot2 Kaplan-Meier plot from ggfortify autoplot() showing two stepped survival curves by sex for the lung dataset, with shaded confidence bands.

Vous obtenez deux courbes de survie en escalier avec des bandes de confiance — parfait pour un coup d’œil rapide.

Note

Conseil du fondateur — pour une figure de survie clinique, utilisez survminer. Un tracé de Kaplan-Meier de publication ou réglementaire a besoin d’une table des effectifs à risque, de la p-value du log-rank sur le graphique, des marques de censure et des lignes de médiane — survminer::ggsurvplot() produit tout cela à partir du même objet survfit en un seul appel. Utilisez autoplot() pour la vérification rapide ; utilisez ggsurvplot() pour la figure qui ira dans l’article. Voir Courbes de survie prêtes à publier.

Ce qu’autoplot() gère aussi

autoplot() est une fonction générique — sa force est l’étendue des classes qu’elle reconnaît. Au-delà des cas ci-dessus, ggfortify s’applique à bien d’autres objets ; vous n’avez que rarement à retenir une fonction de tracé propre à un package :

Domaine Classes reconnues par autoplot()
Modèles lm, glm (diagnostics)
Multivarié prcomp, princomp (ACP), stats::factanal, MASS::isoMDS/sammon (MDS)
Regroupement stats::kmeans, cluster::pam/clara/fanny
Séries temporelles ts, stats::stl/decomposed.ts, stats::acf, forecast::forecast, zoo::zooreg, xts::xts
Détection de ruptures changepoint::cpt, strucchange::breakpoints
Survie survival::survfit, survfit.cox
Matrices matrix, table (heatmap ou nuage de points via geom =)

Comme chacun d’eux renvoie un objet ggplot, la même suite fonctionne partout : ajoutez + theme_minimal(), une palette viridis ou de revue, des titres et des facettes exactement comme vous le feriez sur un graphique construit à la main.

Questions fréquentes

autoplot() est une fonction générique du package ggfortify. Vous lui passez un objet ajusté ou calculé — un lm, un prcomp, un kmeans, un ts, un survfit — et elle inspecte la classe de l’objet puis dessine automatiquement la figure ggplot2 appropriée. Elle vous évite d’écrire un appel ggplot() sur mesure pour chaque type d’objet, et comme le résultat est un ggplot ordinaire, vous pouvez continuer à le styliser avec +.

Oui. autoplot() est une fonction générique vivante et maintenue qui fonctionne avec le ggplot2 actuel — installez-la depuis le CRAN avec install.packages("ggfortify"). La charger avec library(ggfortify) attache ggplot2 pour vous, de sorte que + theme_minimal(), scale_color_viridis_d() et toute autre couche ggplot2 se composent par-dessus un résultat d’autoplot() comme d’habitude.

Utilisez l’autoplot() de ggfortify pour l’aperçu rapide : une ligne transforme un résultat prcomp en un graphique des scores coloré avec des flèches de charges. Utilisez factoextra (fviz_pca_ind(), fviz_pca_biplot(), fviz_eig()) quand vous voulez la figure finie, de qualité publication — graphiques des éboulis, cercle des corrélations des variables, ellipses de confiance par groupe, et coloration par contribution/qualité. Ils se complètent : exploration rapide avec ggfortify, sortie soignée avec factoextra.

Oui — c’est le principal avantage par rapport au plot() de base. autoplot() renvoie un objet ggplot ordinaire, vous ajoutez donc des thèmes (+ theme_minimal()), des échelles de couleurs (+ scale_color_viridis_d()), des titres (+ labs(...)) et même des facettes exactement comme sur n’importe quel graphique construit à la main. Beaucoup d’arguments propres à chaque objet (comme colour, loadings, frame, ts.colour) vous permettent aussi de retoucher la figure directement dans l’appel autoplot().

Ajustez le modèle avec survival::survfit(), puis appelez autoplot() sur le résultat : autoplot(survfit(Surv(time, status) ~ sex, data = lung)). Vous obtenez des courbes de Kaplan-Meier en escalier avec des bandes de confiance. Pour une figure clinique ou de publication — avec une table des effectifs à risque, la p-value du log-rank et les marques de censure — utilisez plutôt survminer::ggsurvplot() sur le même objet survfit.

Pour aller plus loin dans /learn

Cet article est la recette ciblée. Pour les parcours complets, sous garantie de reproductibilité — construire les modèles sous-jacents et les figures de qualité publication pas à pas — voir :

Voir aussi

🟢 Avec un agent IA

Demandez à Prova « dessine les diagnostics ggplot2 de mon lm et un biplot ACP avec autoplot() » — elle répond avec du code que vous pouvez exécuter sur vos propres données. The runtime is the judge. Demander à Prova →

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

Citation

BibTeX
@online{kassambara2026,
  author = {Kassambara, Alboukadel},
  title = {ggfortify : des graphiques ggplot2 en une ligne pour modèles
    et séries temporelles en R},
  date = {2026-07-08},
  url = {https://www.datanovia.com/blog/ggfortify-autoplot-in-r},
  langid = {fr}
}
Veuillez citer ce travail comme suit :
Kassambara, Alboukadel. 2026. “ggfortify : des graphiques ggplot2 en une ligne pour modèles et séries temporelles en R.” July 8. https://www.datanovia.com/blog/ggfortify-autoplot-in-r.