library(ggplot2)
ggplot(ToothGrowth, aes(x = factor(dose), y = len)) +
geom_boxplot(fill = "#3a86d4", alpha = 0.7) +
labs(x = "Dose (mg/day)", y = "Tooth length") +
theme_minimal()
Définissez une couleur unique, colorez par groupe et créez des palettes personnalisées — en direct dans votre navigateur
Apprenez à changer les couleurs ggplot2 en R — définissez une couleur par nom ou par code hexadécimal, colorez par groupe, créez des palettes personnalisées avec scale_fill_manual(), utilisez les palettes viridis et Brewer adaptées au daltonisme, des échelles de gris et des dégradés continus. Modifiez et exécutez le code en direct, sans installation.
20 juin 2026
7 juillet 2026
aes() — fill pour les aires, colour pour les points et les lignes, par nom ("steelblue") ou par code hexadécimal ("#3a86d4").fill ou colour à l’intérieur de aes() ; ggplot2 choisit les couleurs de teinte par défaut et ajoute une légende.scale_fill_manual(values = ...) / scale_colour_manual(values = ...).scale_fill_viridis_d() (discrète) est notre choix par défaut ; le vecteur Okabe–Ito est une alternative prête à l’emploi.scale_fill_brewer(palette = ...), et les échelles de gris avec scale_fill_grey().scale_colour_gradient(), un dégradé divergent scale_colour_gradient2(), un dégradé à n couleurs scale_colour_gradientn(), ou un scale_colour_viridis_c() adapté au daltonisme.La couleur est ce qui permet à une figure ggplot2 de distinguer les groupes et d’attirer le regard. En R, ggplot2 vous donne deux contrôles distincts — fill pour l’intérieur des aires (boîtes, barres, violons) et colour pour les points, lignes et contours — ainsi qu’une famille de fonctions scale_* pour choisir précisément les couleurs auxquelles ils sont associés. Cette leçon couvre la mécanique des couleurs : une couleur fixe, la coloration par groupe, les palettes personnalisées et adaptées au daltonisme, et les dégradés continus. Les figures sont rendues ici même, et vous pouvez réexécuter ou modifier n’importe laquelle d’entre elles en direct.
Si vous voulez simplement parcourir les palettes — les galeries viridis et RColorBrewer, les 657 couleurs R nommées, ou les palettes de revues scientifiques — consultez le guide des palettes de couleurs R qui l’accompagne ; cette leçon reste centrée sur les fonctions scale_* qui les appliquent.
Nous utilisons le jeu de données intégré ToothGrowth : la longueur des cellules odontoblastes (len) chez des cobayes recevant de la vitamine C à trois doses (dose : 0.5, 1 ou 2 mg/jour) via deux méthodes d’administration (supp : jus d’orange OJ ou acide ascorbique VC).
Pour peindre chaque forme de la même couleur, définissez la couleur comme une constante en dehors de aes(). Utilisez fill pour l’intérieur de l’aire et colour pour les points, lignes et contours. Les couleurs sont indiquées par nom ("steelblue") ou par code hexadécimal ("#3a86d4").
fill et colour sont deux attributs esthétiques distincts. fill est l’intérieur de l’aire ; colour est le contour (et, pour les points et les lignes, la marque elle-même). Définissez-les indépendamment — ici un contour foncé autour d’un remplissage azur adouci :

Pour les géométries de points et de lignes, il n’y a pas d’intérieur, c’est donc colour qu’il faut définir :
Pour colorer chaque groupe différemment, associez un facteur à fill ou colour à l’intérieur de aes(). ggplot2 attribue sa palette de teintes par défaut et ajoute automatiquement une légende — aucune échelle n’est nécessaire.

Il en va de même pour colour avec les points et les lignes — associez le groupe à colour plutôt qu’à fill :
Pour choisir vous-même les couleurs exactes, ajoutez scale_fill_manual(values = ...) (ou scale_colour_manual() pour les points et les lignes). Passez une couleur par groupe, par nom ou par code hexadécimal.

Vous pouvez aussi nommer les valeurs pour lier une couleur précise à un groupe précis, quel que soit l’ordre — et l’argument breaks contrôle quelles clés (et leur ordre) apparaissent dans la légende :

Pour l’ensemble des contrôles de légende — titre, étiquettes, ordre, position et style — consultez le guide des légendes ggplot2.
Pour les groupes, préférez une échelle adaptée au daltonisme afin que la figure soit lisible pour tout le monde, en couleur ou à l’impression. Notre choix par défaut est viridis : scale_fill_viridis_d() pour un remplissage discret, scale_colour_viridis_d() pour une couleur discrète.

Si vous préférez choisir les couleurs à la main, la palette Okabe–Ito est un vecteur adapté au daltonisme bien éprouvé que vous pouvez insérer directement dans scale_fill_manual() :
library(ggplot2)
# Okabe-Ito colourblind-safe palette (a ready-made vector — first three values here)
cbp <- c("#E69F00", "#56B4E9", "#009E73", "#F0E442",
"#0072B2", "#D55E00", "#CC79A7", "#999999")
ggplot(ToothGrowth, aes(x = factor(dose), y = len, fill = factor(dose))) +
geom_boxplot() +
scale_fill_manual(values = cbp) +
labs(x = "Dose (mg/day)", y = "Tooth length", fill = "Dose") +
theme_minimal()
ggplot2 est livré avec des échelles RColorBrewer : scale_fill_brewer(palette = ...) et scale_colour_brewer(palette = ...). Nommez une palette qualitative comme "Set2" ou "Dark2" pour des groupes catégoriels. (La galerie Brewer complète se trouve dans le guide des palettes de couleurs R.)
Pour l’impression ou un rendu volontairement sobre, associez les groupes à une échelle de gris avec scale_fill_grey() (ou scale_colour_grey()). Ajustez start et end pour définir le gris le plus clair et le plus foncé.
Lorsque la couleur est associée à une variable numérique, ggplot2 utilise un dégradé continu. Ici, nous résumons les moyennes par groupe directement dans le bloc avec la fonction aggregate() de base de R et colorons les points selon cette moyenne. Trois échelles couvrent les cas courants :
scale_colour_gradient(low, high) — un dégradé bicolore.scale_colour_gradient2(low, mid, high, midpoint) — un dégradé divergent autour d’un point médian.scale_colour_gradientn(colours = ...) — un dégradé à travers n couleurs.library(ggplot2)
# group means, computed in-block with base R (no dplyr)
tg_mean <- aggregate(len ~ dose, data = ToothGrowth, FUN = mean)
ggplot(tg_mean, aes(x = dose, y = len, colour = len)) +
geom_point(size = 6) +
scale_colour_gradient(low = "#cfe3f6", high = "#1f4e79") +
labs(x = "Dose (mg/day)", y = "Mean tooth length", colour = "Mean length") +
theme_minimal()
Un dégradé divergent (scale_colour_gradient2()) est utile lorsque les valeurs se répartissent de part et d’autre d’un centre significatif — ici la longueur moyenne globale :
library(ggplot2)
tg_mean <- aggregate(len ~ dose, data = ToothGrowth, FUN = mean)
mid <- mean(ToothGrowth$len)
ggplot(tg_mean, aes(x = dose, y = len, colour = len)) +
geom_point(size = 6) +
scale_colour_gradient2(
low = "#3a86d4", mid = "grey85", high = "#d62828",
midpoint = mid
) +
labs(x = "Dose (mg/day)", y = "Mean tooth length", colour = "Mean length") +
theme_minimal()
Pour un dégradé à n couleurs, scale_colour_gradientn() interpole à travers tout un vecteur de couleurs — utile pour des rampes à plusieurs paliers ou pour insérer une palette prête à l’emploi (ici les couleurs viridis) :
library(ggplot2)
tg_mean <- aggregate(len ~ dose, data = ToothGrowth, FUN = mean)
ggplot(tg_mean, aes(x = dose, y = len, colour = len)) +
geom_point(size = 6) +
scale_colour_gradientn(colours = c("#440154", "#21908c", "#fde725")) +
labs(x = "Dose (mg/day)", y = "Mean tooth length", colour = "Mean length") +
theme_minimal()
Pour un dégradé viridis continu sans nommer les paliers vous-même, utilisez scale_colour_viridis_c() (le jumeau continu _c de l’échelle discrète _d utilisée plus haut) — la même palette adaptée au daltonisme, appliquée à une variable numérique :
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 couleurs matplotlib/seaborn arrive bientôt dans la série Python.
Demandez à Prova « cette palette est-elle adaptée au daltonisme, et comment la remplacer par viridis ? » — elle répond avec du code que vous pouvez exécuter, de sorte que l’explication est reproductible. The runtime is the judge. Ask Prova →
fill peint l’intérieur des aires (boîtes, barres, violons), tandis que colour contrôle les points, lignes et contours. Pour les géométries de points et de lignes, il n’y a pas d’intérieur, définissez donc colour ; pour une boîte avec une bordure colorée autour d’un intérieur coloré, définissez les deux (par exemple geom_boxplot(fill = "#3a86d4", colour = "grey25")).
Vous avez défini la couleur comme une constante en dehors de aes(), ce qui la fixe pour chaque forme. Pour colorer par groupe, associez le facteur de regroupement à l’intérieur de aes() — par exemple aes(fill = factor(dose)) — et ggplot2 ajoute automatiquement les couleurs et une légende.
Ajoutez scale_fill_manual(values = ...) pour les remplissages (ou scale_colour_manual() pour les points et les lignes) et passez une couleur par groupe, par nom ou par code hexadécimal. Vous pouvez nommer les valeurs comme c(OJ = "#3a86d4", VC = "#f5a524") pour lier une couleur précise à un groupe précis, quel que soit l’ordre.
Utilisez une échelle viridis — scale_fill_viridis_d() pour un remplissage discret ou scale_colour_viridis_d() pour une couleur discrète (utilisez les jumeaux _c pour une variable numérique). Si vous préférez choisir les couleurs à la main, insérez le vecteur Okabe–Ito dans scale_fill_manual(values = ...).
Lorsque vous associez une variable numérique à colour ou fill, ggplot2 utilise un dégradé continu. Définissez les couleurs avec scale_colour_gradient(low, high) pour deux couleurs, scale_colour_gradient2(low, mid, high, midpoint) pour une rampe divergente autour d’un centre, ou scale_colour_gradientn(colours = ...) pour interpoler à travers plusieurs.
Complétez le code pour que les boîtes soient remplies selon dose avec une palette adaptée au daltonisme.
Vous avez défini une couleur unique avec une constante en dehors de aes(), distingué fill de colour, coloré par groupe avec la teinte par défaut et une légende, créé votre propre palette avec scale_fill_manual(), opté pour une échelle viridis ou Brewer adaptée au daltonisme, utilisé une échelle de gris pour l’impression, et associé une variable numérique à un dégradé continu — bicolore, divergent, à n couleurs (scale_colour_gradientn()), et un viridis continu adapté au daltonisme (scale_colour_viridis_c()). Ensuite, appliquez la couleur à d’autres géométries — la boîte à moustaches, le graphique en violon et le diagramme en barres — et explorez le reste de la grammaire de ggplot2.
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.
Prouvez que vous savez le faire. Maîtrisez toute la série ggplot2 — suivez votre parcours, construisez des projets et obtenez un certificat.
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
✓ Vous êtes Pro — continuez. The runtime is the judge.
Prêt à passer à la vitesse supérieure ?
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.
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 = {Couleurs ggplot2 en R : changer les couleurs par groupe},
date = {2026-06-20},
url = {https://www.datanovia.com/learn/data-visualization/ggplot2/colors},
langid = {fr}
}