Matrice de nuages de points en ggplot2 : ggpairs()

Tracez toutes les paires de variables d’un coup, lisez les corrélations et colorez par groupe avec GGally

Construisez une matrice de nuages de points en ggplot2 avec ggpairs() de GGally : tracez toutes les paires de variables d’un coup, lisez les panneaux de corrélation intégrés, choisissez les colonnes à afficher, colorez par facteur de groupe et personnalisez les panneaux supérieurs, inférieurs et diagonaux avec wrap().

Date de publication

12 juillet 2026

Modifié

12 juillet 2026

AstucePoints clés
  • GGally::ggpairs() trace une matrice de nuages de points en ggplot2 — chaque paire de variables dans une seule grille, avec nuages de points, densités et corrélations intégrés.
  • La disposition par défaut est le nuage de points sous la diagonale, la densité dessus et le coefficient de corrélation au-dessus — aucune fonction de panneau à écrire.
  • Sélectionnez les colonnes avec columns = et renommez-les avec columnLabels =.
  • Colorez par groupe avec aes(colour = <factor>) ; ajoutez + scale_colour_manual() pour une palette adaptée au daltonisme.
  • Personnalisez n’importe quelle zoneupper, lower, diag — avec wrap() pour changer le type de panneau ou ses attributs esthétiques (ajouter un lissage, ajuster alpha pour la surcharge).
  • ggpairs() gère aussi les colonnes catégorielles, en mêlant boîtes à moustaches et histogrammes dans la matrice.
Obtenez le livre — GGPlot2 Essentials (PDF)

Introduction

Vous avez plusieurs variables numériques et voulez voir comment elles sont liées — avant d’ajuster un modèle. Une matrice de nuages de points trace chaque nuage de points par paire dans une seule grille, de sorte que vous pouvez balayer d’un coup d’œil toutes les corrélations, les regroupements et les valeurs aberrantes. C’est le premier regard le plus rapide sur un petit jeu de données multivarié.

En ggplot2, l’outil est ggpairs() du paquet GGally, une extension de ggplot2. Un seul appel vous donne une matrice prête à publier : des nuages de points dans le triangle inférieur, une courbe de densité sur la diagonale et la corrélation de Pearson dans le triangle supérieur — et elle se colore proprement par groupe. Cette leçon couvre l’appel de base, le choix des colonnes, la coloration par facteur, la personnalisation de chaque zone de panneau et l’intégration de variables catégorielles.

Vous préférez R de base ? La leçon matrice de nuages de points en R de base construit la même grille avec pairs() et des fonctions de panneau personnalisées — celle-ci en est le pendant ggplot2.

Les données

Nous utilisons le jeu de données intégré iris : quatre mesures de fleurs (longueur et largeur des sépales et des pétales) pour 50 fleurs de chacune des trois espèces. Les quatre colonnes numériques sont celles que nous comparons ; la cinquième, Species, est le facteur de groupe.

head(iris)
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa

Une matrice de nuages de points de base

Chargez GGally et passez les quatre colonnes numériques. columns = 1:4 écarte le facteur Species afin que la matrice n’affiche que les mesures.

library(GGally)

ggpairs(iris, columns = 1:4)

A four-by-four ggplot2 scatterplot matrix of the iris sepal and petal measurements built with ggpairs: scatter plots in the lower triangle, a density curve on the diagonal, and the Pearson correlation coefficient in the upper triangle.

Lisez-la comme un tableau. Chaque cellule hors diagonale associe deux variables ; le triangle inférieur trace le nuage de points et le triangle supérieur affiche la corrélation de Pearson de cette paire (Corr:). La diagonale montre la distribution propre à chaque variable sous forme de courbe de densité. Ainsi, en une seule figure, vous obtenez la forme de chaque variable, la dispersion de chaque paire et la force de chaque relation — les trois choses que vous vérifiez en premier. La longueur et la largeur des pétales ressortent immédiatement : une corrélation de 0.96.

Choisir les colonnes à afficher

ggpairs() trace les colonnes que vous nommez. Utilisez columns = pour vous concentrer sur un sous-ensemble, columnLabels = pour leur donner des noms lisibles et title = pour légender la figure :

library(GGally)

ggpairs(
  iris,
  columns      = c("Sepal.Length", "Petal.Length", "Petal.Width"),
  columnLabels = c("Sepal L.", "Petal L.", "Petal W."),
  title        = "Iris measurements"
)

A three-by-three ggplot2 scatterplot matrix showing sepal length, petal length and petal width with tidy axis labels and a title.

Nommer les colonnes garde la matrice petite et lisible — ne lui donnez que les variables que vous voulez réellement comparer, surtout lorsque le data frame en compte beaucoup plus.

Colorer par groupe

Associer un facteur à la couleur transforme la matrice en vérification rapide de la séparation des groupes. Passez un aes(colour = Species) global : les points du nuage, les densités de la diagonale et les panneaux de corrélation se répartissent tous par groupe. Ajoutez scale_colour_manual() et scale_fill_manual() — un + sur un objet ggpairs applique l’échelle à chaque panneau — pour une palette adaptée au daltonisme.

library(GGally)

my_cols <- c("#3a86d4", "#f4a259", "#5fad56")  # colourblind-safe, one per species

ggpairs(iris, columns = 1:4, aes(colour = Species, alpha = 0.6)) +
  scale_colour_manual(values = my_cols) +
  scale_fill_manual(values = my_cols)

A ggplot2 scatterplot matrix of the four iris measurements built with ggpairs, points and diagonal densities coloured by species in azure, orange and green, with the overall and per-species correlations printed in each upper panel.

Les panneaux des pétales se scindent en trois nuages nets — la taille des pétales sépare les espèces bien mieux que celle des sépales — et chaque panneau supérieur indique désormais la corrélation par espèce en plus de la corrélation globale. Cette lecture par groupe est précisément la raison d’être de la matrice colorée. (alpha = 0.6 estompe les points pour que les panneaux denses restent lisibles.)

Personnaliser les panneaux

Chaque zone de la matrice — upper, lower, diag — reçoit une liste qui définit le type de panneau et ses attributs esthétiques. Enveloppez un type de panneau dans wrap() pour lui passer des arguments. Ici, nous posons un lissage LOESS (régression localement pondérée) sur les nuages de points inférieurs, teintons les densités de la diagonale et réduisons la taille du texte de corrélation dans le triangle supérieur :

library(GGally)

ggpairs(
  iris, columns = 1:4,
  lower = list(continuous = wrap("smooth", alpha = 0.3, colour = "#3a86d4")),
  diag  = list(continuous = wrap("densityDiag", fill = "#cfe0f4")),
  upper = list(continuous = wrap("cor", size = 3))
)

A ggplot2 scatterplot matrix of the iris measurements with azure points and a dark LOESS smoother line in the lower scatter plots, tinted density curves on the diagonal, and smaller correlation text in the upper panels.

Les types de panneaux nommés sont les briques de base : "points" et "smooth" pour le nuage inférieur/supérieur, "cor" pour la corrélation, "densityDiag"/"barDiag" pour la diagonale. L’argument alpha est la solution classique à la surcharge — estompez les points jusqu’à ce que les regroupements denses se lisent comme une teinte plutôt qu’un pâté uniforme.

Mélanger variables continues et catégorielles

Contrairement à pairs() de R de base, ggpairs() gère aussi les colonnes catégorielles. Incluez le facteur Species et il remplit judicieusement les cellules mixtes — une boîte à moustaches là où une variable continue rencontre le facteur, un diagramme en barres sur la diagonale du facteur, un histogramme à facettes là où le facteur rencontre une variable continue :

library(GGally)

ggpairs(iris, columns = c("Sepal.Length", "Petal.Length", "Species"))

A ggplot2 ggpairs matrix mixing two continuous iris measurements with the categorical species column, showing scatter, correlation, box plots and histograms in the appropriate cells.

ggpairs() choisit le type de panneau à partir de chaque paire de types de colonnes, si bien que vous pouvez déposer une variable de groupe directement dans la matrice et lire comment chaque mesure diffère selon ses niveaux.

Lire les panneaux de corrélation

La valeur Corr: de chaque panneau supérieur est la corrélation de Pearson de cette paire — de −1 (négative parfaite) à +1 (positive parfaite) en passant par 0 (aucune relation linéaire). Lorsque vous colorez par groupe, ggpairs() ajoute la corrélation au sein de chaque groupe sous la corrélation globale, ce qui vous permet de voir si une relation tient à l’intérieur de chaque groupe ou si elle provient de la séparation entre eux.

ggpairs() affiche le coefficient mais n’est pas un graphique de matrice de corrélation dédié. Pour une heatmap de corrélation codée par couleur avec marques de signification, utilisez la leçon ggcorrplot ; et pour des courbes de survie de Kaplan-Meier en ggplot2, utilisez ggsurvplot() de survminer plutôt que ggsurv() de GGally.

Essayez en direct

Modifiez les colonnes, la palette ou les enveloppes de panneaux et appuyez sur Run — cela s’exécute dans votre navigateur via webR, sans installation. (GGally se télécharge au premier Run, laissez-lui donc un instant.)

🟢 Avec un agent IA

Demandez à Prova « comment mettre un lissage LOESS dans les panneaux inférieurs d’un graphique ggpairs ? » — elle répond avec du code ggplot2 que vous pouvez exécuter, donc la correction est reproductible. The runtime is the judge. Demander à Prova →

Problèmes fréquents

ggpairs() se plaint d’un trop grand nombre de colonnes. La matrice croît en panneaux — passez un grand data frame et elle devient lente et illisible. Sélectionnez une poignée de colonnes avec columns = avant de tracer ; dix variables font déjà cent panneaux.

Les couleurs ne changent pas quand j’ajoute une échelle. Associez le groupe à l’intérieur d’un aes() global — ggpairs(iris, aes(colour = Species)) — et non comme argument d’un panneau. Ensuite, + scale_colour_manual() (et scale_fill_manual() pour les densités) recolore tous les panneaux d’un coup.

Les panneaux denses forment un pâté uniforme. C’est de la surcharge, pas un bogue. Estompez les points avec aes(alpha = ...) ou wrap("points", alpha = 0.3), ou basculez les panneaux inférieurs sur "smooth" pour tracer une courbe de tendance à travers le nuage.

Questions fréquentes

Utilisez GGally::ggpairs(). Chargez GGally et passez vos données avec les colonnes à tracer — ggpairs(iris, columns = 1:4) — et il trace chaque nuage de points par paire, une densité sur la diagonale, et la corrélation dans le triangle supérieur, le tout en ggplot2.

Associez le facteur de groupe à l’intérieur d’un aes() global : ggpairs(iris, columns = 1:4, aes(colour = Species)). Les points du nuage, les densités de la diagonale et les panneaux de corrélation se répartissent tous par groupe. Ajoutez + scale_colour_manual(values = my_cols) + scale_fill_manual(values = my_cols) pour une palette personnalisée.

Videz la zone supérieure : ggpairs(iris, columns = 1:4, upper = "blank"). Mettez plutôt lower = "blank" pour ne garder que le triangle supérieur. Les deux triangles hors diagonale montrent des types de panneaux différents (nuage de points contre corrélation), choisissez donc celui que vous voulez lire.

pairs() relève de R de base : rapide, sans paquet, mais vous écrivez des fonctions de panneau pour ajouter des corrélations ou des histogrammes. ggpairs() relève de ggplot2 via GGally : corrélations, densités et coloration par groupe sont intégrées, et il gère aussi les colonnes catégorielles. Voyez la leçon pairs() en R de base pour cet idiome.

Oui. Incluez une colonne de facteur et ggpairs() remplit les cellules mixtes avec des boîtes à moustaches et des histogrammes — une boîte à moustaches là où une variable continue rencontre le facteur et un diagramme en barres sur la diagonale du facteur — au lieu de générer une erreur comme le fait pairs() sur des données non numériques.

Testez vos connaissances

À partir des colonnes mpg, hp, wt et qsec de mtcars, tracez une matrice de nuages de points ggpairs() qui place un lissage LOESS dans les panneaux inférieurs. Colorez les points en un seul azur ("#3a86d4").

Passez columns = c("mpg", "hp", "wt", "qsec"), puis définissez lower = list(continuous = wrap("smooth", colour = "#3a86d4", alpha = 0.4)).

library(GGally)

ggpairs(
  mtcars,
  columns = c("mpg", "hp", "wt", "qsec"),
  lower   = list(continuous = wrap("smooth", colour = "#3a86d4", alpha = 0.4))
)

Le wrap("smooth", ...) définit le type du panneau inférieur sur un nuage de points avec lissage et lui transmet la couleur et alpha ; les panneaux supérieurs conservent l’affichage de corrélation par défaut.

Vérification rapide. Vous voulez une matrice ggpairs() qui n’affiche que le triangle inférieur des panneaux. Quel argument définissez-vous, et à quelle valeur ?

upper = "blank". Vider la zone supérieure laisse les panneaux de nuage inférieurs et la diagonale ; mettez plutôt lower = "blank" pour ne garder que le triangle supérieur (corrélation).

Conclusion

GGally::ggpairs() est la matrice de nuages de points en un seul appel pour ggplot2 : donnez-lui vos colonnes et il trace toutes les paires d’un coup, avec nuages de points, densités diagonales et corrélations intégrés. Sélectionnez les variables avec columns =, renommez avec columnLabels =, colorez par facteur avec aes(colour = ...) plus une échelle manuelle, et remodelez n’importe quelle zone avec upper/lower/diag et wrap(). Parce que c’est du ggplot2 de bout en bout, il mélange aussi les variables continues et catégorielles que pairs() de R de base ne peut pas.

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 : chaque figure a été produite par le code affiché, exécuté lors de la génération du site (si elles s’affichent, le code fonctionne), et le bac à sable se réexécute en direct dans votre navigateur. Modifiez n’importe quel bloc et appuyez sur Run. The runtime is the judge.

Réutilisation

Citation

BibTeX
@online{2026,
  author = {},
  title = {Matrice de nuages de points en ggplot2 : ggpairs()},
  date = {2026-07-12},
  url = {https://www.datanovia.com/learn/data-visualization/ggplot2/scatterplot-matrix},
  langid = {fr}
}
Veuillez citer ce travail comme suit :
“Matrice de nuages de points en ggplot2 : ggpairs().” 2026. July 12. https://www.datanovia.com/learn/data-visualization/ggplot2/scatterplot-matrix.