Changer la forme, la taille, la couleur et le remplissage des points dans ggplot2 — en direct dans votre navigateur
Apprenez à changer les formes de points en R avec ggplot2 — définissez un marqueur unique avec geom_point(shape = ), choisissez dans le catalogue pch 0–25, utilisez les formes remplissables 21–25, et associez forme, couleur et taille à un groupe avec scale_shape_manual(). Modifiez et exécutez le code en direct, sans installation.
Date de publication
20 juin 2026
Modifié
7 juillet 2026
AstucePoints clés
La forme de point dans ggplot2 est définie par l’argument shape de geom_point() — un nombre du catalogue pch 0–25 (carré, cercle, triangle, plus, croix, losange, étoile, et variantes pleines).
Définissez une seule forme pour tous les points avec geom_point(shape = ...), et ajustez-la avec size, colour et alpha.
Les formes 21–25 sont remplissables : colour peint la bordure, fill peint l’intérieur — les seules formes où les deux s’appliquent.
Associez shape à un facteur de regroupement avec aes(shape = group) pour donner à chaque groupe un symbole différent, et combinez-le avec aes(colour = ...) / aes(size = ...).
Remplacez les choix automatiques avec scale_shape_manual(), scale_colour_manual() et scale_size_manual() ; utilisez une palette adaptée au daltonisme (scale_colour_viridis_d()) pour les groupes.
Chaque graphique ci-dessous est rendu pour vous — puis modifiez n’importe quel exemple en direct dans le bac à sable.
Dans un nuage de points ggplot2, le marqueur tracé à chaque point de données est sa forme de point. La changer est l’une des personnalisations les plus courantes : vous définissez un symbole unique pour respecter une charte graphique, ou vous donnez à chaque groupe son propre symbole pour que le graphique se lise clairement en noir et blanc. En R, ggplot2 contrôle cela via l’argument shape de geom_point(), qui accepte un code pch de 0 à 25. Cette leçon parcourt tout le catalogue, la différence entre formes bordées et formes remplissables, et comment associer forme, couleur et taille à un groupe — avec chaque figure rendue ici même pour que vous puissiez la réexécuter ou la modifier en direct.
Nous utilisons le jeu de données intégré mtcars : consommation de carburant et caractéristiques de conception de 32 voitures issues des essais routiers Motor Trend de 1974. Nous traçons le poids (wt, en milliers de livres) en fonction de la consommation (mpg, miles par gallon), et regroupons selon le nombre de cylindres (cyl : 4, 6 ou 8).
Ce guide présente l’idiome ggplot2. Pour l’équivalent en base-R — les symboles pch tracés avec plot() et points() — une série base-R dédiée est en préparation.
Le catalogue de formes de points pch (0–25)
Chaque forme de point ggplot2 est l’un des 26 symboles, numérotés de 0 à 25 : carrés, cercles et triangles ouverts (0–2), un plus et une croix (3–4), un losange ouvert (5), des variantes pleines (15–20), et les formes remplissables 21–25. La référence ci-dessous trace les 26 pour que vous puissiez choisir un nombre à l’œil — elle est construite à partir d’un petit data frame en place, elle s’exécute donc de manière autonome.
Pour tracer chaque point avec un même symbole, passez un nombre pch à l’argument shape de geom_point(). Ici chaque voiture est un triangle plein (shape = 17).
library(ggplot2)ggplot(mtcars, aes(x = wt, y = mpg)) +geom_point(shape =17) +labs(x ="Weight (1000 lbs)", y ="Miles per gallon") +theme_minimal()
Combiner forme, taille et couleur
shape voyage rarement seul. Définissez size pour agrandir le marqueur, colour pour le recolorer, et alpha pour l’adoucir — ici un losange azur plus grand (shape = 18) dans la couleur de la marque.
library(ggplot2)ggplot(mtcars, aes(x = wt, y = mpg)) +geom_point(shape =18, size =4, colour ="#3a86d4", alpha =0.8) +labs(x ="Weight (1000 lbs)", y ="Miles per gallon") +theme_minimal()
Formes remplissables 21–25 : remplissage et couleur
Les formes 21–25 sont particulières : elles possèdent à la fois une bordure et un intérieur, donc colour définit le contour et fill définit l’intérieur — les seules formes où les deux attributs esthétiques s’appliquent. Un cercle plein (shape = 21) avec une bordure foncée et un remplissage azur est un choix répandu et lisible.
library(ggplot2)ggplot(mtcars, aes(x = wt, y = mpg)) +geom_point(shape =21, size =4, colour ="grey20", fill ="#3a86d4",stroke =1) +labs(x ="Weight (1000 lbs)", y ="Miles per gallon") +theme_minimal()
Associer la forme à un groupe
Pour donner à chaque groupe son propre symbole, associez la variable de regroupement à shape à l’intérieur de aes(). ggplot2 choisit une forme distincte par niveau automatiquement et trace une légende. Comme cyl est stocké sous forme de nombre, encadrez-le dans factor() pour qu’il soit traité comme un groupe.
library(ggplot2)ggplot(mtcars, aes(x = wt, y = mpg, shape =factor(cyl))) +geom_point(size =3) +labs(x ="Weight (1000 lbs)", y ="Miles per gallon", shape ="Cylinders") +theme_minimal()
Associer forme et couleur (et taille) ensemble
Pour une clarté maximale, encodez le groupe avec à la fois la forme et la couleur — le graphique se lit alors en couleur et à l’impression. Associez la même variable à shape et colour ; ajoutez size pour un troisième canal si utile. Utilisez une palette adaptée au daltonisme (scale_colour_viridis_d()) pour la couleur.
library(ggplot2)ggplot(mtcars, aes(x = wt, y = mpg, shape =factor(cyl), colour =factor(cyl))) +geom_point(size =3) +scale_colour_viridis_d() +labs(x ="Weight (1000 lbs)", y ="Miles per gallon",shape ="Cylinders", colour ="Cylinders") +theme_minimal()
Définir les formes des groupes manuellement
Lorsque vous voulez des symboles précis plutôt que les valeurs par défaut de ggplot2, remplacez-les avec scale_shape_manual(values = c(...)) — un code pch par niveau de groupe.
library(ggplot2)ggplot(mtcars, aes(x = wt, y = mpg, shape =factor(cyl))) +geom_point(size =3, colour ="#3a86d4") +scale_shape_manual(values =c(16, 15, 17)) +labs(x ="Weight (1000 lbs)", y ="Miles per gallon", shape ="Cylinders") +theme_minimal()
Définir les couleurs des groupes manuellement
Associez des formes manuelles à des couleurs manuelles via scale_colour_manual(). Plutôt que des codes hexadécimaux ad hoc, notre choix par défaut est la palette viridis adaptée au daltonisme — extrayez-en quelques couleurs pour que le résultat soit à la fois délibéré et accessible.
Pour la boîte à outils complète des palettes — Brewer, dégradés manuels et échelles continues — consultez le guide des couleurs ggplot2.
Définir les tailles de points des groupes manuellement
Vous pouvez aussi associer size à un groupe et fixer les rayons exacts avec scale_size_manual() — pratique lorsqu’un groupe doit se démarquer. (Associer la taille à une catégorie est à réserver de préférence à la mise en évidence ; pour une quantité, associez la taille à une variable numérique à la place.)
library(ggplot2)ggplot(mtcars, aes(x = wt, y = mpg, size =factor(cyl))) +geom_point(shape =16, colour ="#3a86d4", alpha =0.7) +scale_size_manual(values =c(2, 3.5, 5)) +labs(x ="Weight (1000 lbs)", y ="Miles per gallon", size ="Cylinders") +theme_minimal()
Symboles de caractères comme formes
Outre les nombres, shape accepte un seul caractère — "+", "*", ".", ou n’importe quelle lettre — tracé littéralement à chaque point. Un piège : fill ne prend effet que pour les formes remplissables numérotées 21–25, donc un caractère ou tout autre pch l’ignore.
library(ggplot2)ggplot(mtcars, aes(x = wt, y = mpg)) +geom_point(shape ="+", size =5, colour ="#3a86d4") +labs(x ="Weight (1000 lbs)", y ="Miles per gallon") +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 des styles de marqueurs matplotlib arrive dans la série Python.
🟢 Avec un agent IA
Demandez à Prova« quelles formes de points restent distinguables en noir et blanc ? » — elle répond avec du code que vous pouvez exécuter, l’explication est donc reproductible. The runtime is the judge.Demander à Prova →
Questions fréquentes
NoteComment changer la forme des points dans ggplot2 ?
Passez un nombre pch à l’argument shape de geom_point() — par exemple geom_point(shape = 17) trace chaque point sous forme de triangle plein. L’argument shape accepte n’importe quel code du catalogue pch 0–25.
NoteQuelle est la différence entre colour et fill pour les points ggplot2 ?
Pour la plupart des formes, seul colour s’applique et il peint le marqueur entier. Les formes remplissables 21–25 font exception : colour définit la bordure et fill définit l’intérieur, par exemple geom_point(shape = 21, colour = "grey20", fill = "#3a86d4").
NotePourquoi ma couleur de fill est-elle ignorée dans ggplot2 ?
fill ne prend effet que pour les formes remplissables numérotées 21–25. Tout autre pch — ou une forme caractère comme "+" — se trace uniquement avec colour et ignore silencieusement fill, alors passez à une forme 21–25 si vous avez besoin d’une couleur d’intérieur distincte.
NoteComment utiliser une forme de point différente pour chaque groupe dans ggplot2 ?
Associez la variable de regroupement à shape à l’intérieur de aes(), comme dans aes(shape = factor(cyl)), et ggplot2 attribue un symbole distinct par niveau et trace une légende. Encadrez une variable numérique dans factor() pour qu’elle soit traitée comme un groupe plutôt que comme une valeur continue.
NoteComment définir des formes de points spécifiques manuellement dans ggplot2 ?
Ajoutez scale_shape_manual(values = c(...)) avec un code pch par niveau de groupe — par exemple scale_shape_manual(values = c(16, 15, 17)) donne aux trois groupes un cercle, un carré et un triangle. Cela remplace les choix de formes automatiques de ggplot2.
Testez vos connaissances
ImportantExercice : un marqueur cercle plein avec une bordure
Complétez le code pour que chaque point soit un cercle plein (pch 21) avec une bordure gris foncé et un remplissage intérieur azur.
# Shapes 21–25 take BOTH colour (border) and fill (interior).# Use geom_point(shape = 21, size = 4, colour = "grey20", fill = "#3a86d4")
library(ggplot2)ggplot(mtcars, aes(x = wt, y = mpg)) +geom_point(shape =21, size =4, colour ="grey20", fill ="#3a86d4") +theme_minimal()
Conclusion
Vous avez parcouru tout le catalogue pch 0–25, défini une forme unique avec geom_point(shape = ...), combiné la forme avec la taille et la couleur, utilisé les formes remplissables 21–25 (bordure et intérieur), associé forme et couleur à un groupe, et remplacé les valeurs par défaut avec scale_shape_manual(), scale_colour_manual() et scale_size_manual(). Ensuite, construisez le graphique lui-même dans la leçon nuage de points, et appliquez le même motif forme/échelle aux lignes dans le guide types de lignes.
Leçons connexes
Couleurs et palettes — des palettes pour les points groupés. · Types de lignes — le même motif d’échelle pour les lignes. · Légende — styliser la légende des formes. · Thèmes — l’apparence générale.
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 = {Formes de points ggplot2 en R : le guide complet},
date = {2026-06-20},
url = {https://www.datanovia.com/learn/data-visualization/ggplot2/point-shapes},
langid = {fr}
}