library(ggfortify)
model <- lm(Petal.Width ~ Petal.Length, data = iris)
autoplot(model, colour = "#3a86d4", smooth.colour = "#fb5607") +
theme_minimal()
autoplot() transforme les objets lm, ACP, regroupement et séries temporelles en figures ggplot2
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.
autoplot() — une fonction générique qui reconnaît la classe de votre objet et dessine la figure ggplot2 qui lui convient.prcomp), regroupement k-means et séries temporelles — chacun en une seule ligne.+ theme_minimal(), couleurs de la marque, viridis) car autoplot() renvoie un objet ggplot normal.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).
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 :

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.
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).

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.
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.
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 :

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 cluster — autoplot() 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 =.
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.
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 :

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.
ggfortify reconnaît aussi les objets survival::survfit(), donc une courbe de Kaplan-Meier tient en une ligne :

Vous obtenez deux courbes de survie en escalier avec des bandes de confiance — parfait pour un coup d’œil rapide.
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.
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.
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.
/learnCet 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 :
autoplot() s’appuie, à partir de zéro.prcomp, les figures factoextra et l’interprétation des composantes.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 →
@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}
}