Top Palettes de Couleurs R à Connaître pour une Meilleur Visualisation des Données



Top Palettes de Couleurs R à Connaître pour une Meilleur Visualisation des Données

Cet article présente les palettes de couleurs dans R pour changer la couleur par défaut d’un graphique généré à l’aide des fonctions ggplot2 ou fonctions basiques de R.

Vous apprendrez comment utiliser les top 6 palettes de couleurs prédéfinies dans R, disponibles dans différents packages R:

  • Echelles de couleurs Viridis [package viridis].
  • Palettes Colorbrewer [packageRColorBrewer]
  • Palettes de couleurs grises [package ggplot2]
  • Palettes de couleurs des revues scientifiques [package ggsci]
  • Palettes de couleurs Wes Anderson [package wesanderson]
  • Palettes de couleurs de base R : rainbow, heat.colors, cm.colors.

Notez que les palettes de couleurs “rainbow” et “heat” sont moins uniformes visuellement par rapport aux autres échelles de couleurs. L’échelle “viridis” se distingue par sa large gamme visuelle. Il utilise autant que possible l’échelle de couleurs disponible tout en conservant l’uniformité.

En comparant ces palettes de couleurs comme elles peuvent apparaître sous diverses formes de daltonisme, les palettes viridis restent les plus robustes.



Sommaire:

Livre Apparenté

GGPLOT2 - L’Essentiel pour une Visualisation Magnifique des Données dans R

Données de démonstration

Nous utiliserons le jeu de données iris.

head(iris, 6)
##   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

Créer un ggplot de base coloré par groupes

Vous pouvez modifier les couleurs en fonction d’une variable de regroupement par:

  • Mappage de l’argument color à la variable d’intérêt. Ceci s’appliquera aux points, lignes et textes
  • Mapper l’argument fill à la variable d’intérêt. Ceci changera la couleur de remplissage des zones, telles que dans les box plots, les bar plots, les histogrammes, les diagrammes de densité, etc.

Dans notre exemple, nous allons mapper les options color et fill à la variable de groupement Species, pour le nuage de points et le box plot, respectivement.

Modifie les couleurs par groupes en utilisant les niveaux de la variable `Species’:

library("ggplot2")
# Box plot
bp <- ggplot(iris, aes(Species, Sepal.Length)) + 
  geom_boxplot(aes(fill = Species)) +
  theme_minimal() +
  theme(legend.position = "top")
bp

# Diagramme de dispersion
sp <- ggplot(iris, aes(Sepal.Length, Sepal.Width)) + 
  geom_point(aes(color = Species)) +
  theme_minimal()+
  theme(legend.position = "top")
sp

Palettes de couleurs Viridis

Le package R viridis (par Simon Garnier) fournit des palettes de couleurs pour faire de belles intrigues qui sont : imprimables, uniformes au niveau de la perception et faciles à lire pour les personnes daltoniennes.

Installerez et chargez le package comme suit:

install.packages("viridis")  # Installer
library("viridis")           # Charger

Le package viridis contient quatre échelles de couleurs séquentielles : “Viridis” (le premier choix) et trois alternatives aux propriétés similaires (“magma”, “plasma” et “inferno”).

Fonctions clés:

  • scale_color_viridis(): Modifier la couleur des points, des lignes et des textes
  • scale_fill_viridis(): Changer la couleur de remplissage des zones (box plots, bar plots, etc.)
  • viridis(n), magma(n), inferno(n) etplasma(n) : Générer des palettes de couleurs pour la fonction plot de base, où n est le nombre de couleurs à retourner.

Notez que les fonctions scale_color_viridis()et scale_fill_viridis() ont un argument nommé option, qui est une chaîne de caractères indiquant l’option colormap à utiliser. Quatre options sont disponibles : “magma” (ou “A”), “inferno” (ou “B”), “plasma” (ou “C”) et “viridis” (ou “D”, option par défaut).

  1. Utilisation dans ggplot2
library(ggplot2)
# Couleur dégradée
ggplot(iris, aes(Sepal.Length, Sepal.Width))+
  geom_point(aes(color = Sepal.Length)) +
  scale_color_viridis(option = "D")+
  theme_minimal() +
  theme(legend.position = "bottom")

# Couleur discrète. utiliser l'argument discrete = TRUE
ggplot(iris, aes(Sepal.Length, Sepal.Width))+
  geom_point(aes(color = Species)) +
  geom_smooth(aes(color = Species, fill = Species), method = "lm") + 
  scale_color_viridis(discrete = TRUE, option = "D")+
  scale_fill_viridis(discrete = TRUE) +
  theme_minimal() +
  theme(legend.position = "bottom")

  1. Utilisation dans le graphique de base. Utilisez la fonction viridis() pour générer le nombre de couleurs que vous voulez:
barplot(1:10, col = viridis(10))

Palettes RColorBrewer

Le package RColorBrewer crée de jolies palettes de couleurs. Vous devez d’abord l’installer comme suit: install.packages("RColorBrewer").

Pour afficher toutes les palettes de couleurs dans le package, tapez ceci:

library(RColorBrewer)
display.brewer.all()

Le package contient 3 types de palettes de couleurs : séquentielles, divergentes et qualitatives.

  1. Palettes séquentielles (première liste de couleurs), qui sont adaptées aux données ordonnées qui évoluent de bas en haut (gradient). Les noms des palettes sont : Blues, BuGn, BuPu, GnBu, Greens, Greys, Oranges, OrRd, PuBu, PuBuGn, PuRd, Purples, RdPu, Reds, YlGn, YlGnBu YlOrBr, YlOrRd.
  2. Palettes qualitatives (deuxième liste de couleurs), qui conviennent le mieux pour représenter des données nominales ou catégorielles. Ils n’impliquent pas de différences d’ampleur entre les groupes. Les noms des palettes sont : Accent, Dark2, Paired, Pastel1, Pastel2, Set1, Set2, Set3.
  3. Palettes divergentes (troisième liste de couleurs), qui mettent autant l’accent sur les valeurs critiques du milieu et les extrêmes aux deux extrémités de la plage de données. Les palettes divergentes sont : BrBG, PiYG, PRGn, PuOr, RdBu, RdGy, RdYlBu, RdYlGn, Spectral

Le package RColorBrewer comprend également trois fonctions importantes:

# 1. Retourne la spécification de la couleur hexadécimale 
brewer.pal(n, name)

# 2. Afficher une seule palette RColorBrewer 
# en précisant son nom
display.brewer.pal(n, name)

# 3. Afficher toute la palette de couleurs
display.brewer.all(n = NULL, type = "all", select = NULL,
                   colorblindFriendly = FALSE)

Description des arguments de fonction:

  • n: Nombre de couleurs différentes dans la palette, minimum 3, maximum selon la palette.
  • name: Un nom de palette à par de la liste ci-dessus. Par exemple name = RdBu.
  • type: Le type de palette à afficher. Les valeurs autorisées en sont : “div”, “qual”, “seq” ou “all”.
  • select: Une liste de noms de palettes à afficher.
  • colorblindFriendly: si TRUE, n’afficher que les palettes compatibles avec les daltoniens.

Pour n’afficher que les palettes “brewer” adaptées aux daltoniens, utilisez ce code R:

display.brewer.all(colorblindFriendly = TRUE)

Vous pouvez également visualiser une seule palette RColorBrewer en spécifiant son nom comme suit :

# Visualiser une seule palette RColorBrewer en spécifiant son nom
display.brewer.pal(n = 8, name = 'Dark2')

# Spécification de couleur hexadécimale 
brewer.pal(n = 8, name = "Dark2")
## [1] "#1B9E77" "#D95F02" "#7570B3" "#E7298A" "#66A61E" "#E6AB02" "#A6761D"
## [8] "#666666"

Utilisation dans ggplot2. Deux fonctions scale sont disponibles dans ggplot2 pour l’utilisation des palettes colorbrewer:

  • scale_fill_brewer() pour box plot, bar plot, violin plot, dot plot, etc
  • scale_color_brewer() pour les lignes et les points
# Box plot
bp + scale_fill_brewer(palette = "Dark2")

# Diagramme de dispersion
sp + scale_color_brewer(palette = "Dark2")

Utilisation dans les graphiques de base. La fonction brewer.pal() est utilisée pour générer un vecteur de couleurs.

# Barplot avec RColorBrewer
barplot(c(2,5,7), col = brewer.pal(n = 3, name = "RdBu"))

Palettes de couleurs grises

Fonctions clés:

  • scale_fill_grey() pour box plot, bar plot, violin plot, dot plot, etc
  • scale_colour_grey() pour des points, lignes, etc
# Box plot
bp + scale_fill_grey(start = 0.8, end = 0.2) 

# Diagramme de dispersion
sp + scale_color_grey(start = 0.8, end = 0.2) 

Palettes de couleurs pour revues scientifiques

Le package R `ggsci’ contient une collection de palettes de couleurs de haute qualité inspirées des couleurs utilisées dans les revues scientifiques, les packages de visualisation de données, etc.

Les palettes de couleurs sont fournies sous forme de fonctions “scales” dans ggplot2:

  • scale_color_npg() et scale_fill_npg() : Palettes de couleurs “Nature Publishing Group”
  • scale_color_aaas() et scale_fill_aaaas() : palette de couleurs de “American Association for the Advancement of Science”
  • scale_color_lancet() et scale_fill_lancet() : Palettes de couleurs du journal Lancet
  • scale_color_jco() et scale_fill_jco() : Palettes de couleurs du “Journal of Clinical Oncology”
  • scale_color_tron() et scale_fill_tron() : Cette palette s’inspire des couleurs utilisées dans “Tron Legacy”. Il est approprié à l’affichage des données lors de l’utilisation d’un thème sombre.

Vous pouvez trouver d’autres exemples dans les vignettes des packages ggsci.

Notez que pour les graphes de base, vous pouvez utiliser le générateur de palette correspondant pour créer une liste de couleurs. Par exemple, vous pouvez utiliser : pal_npg(), pal_aaaas(), pal_lancet(), pal_jco(), et ainsi de suite.

  1. Utilisation dans ggplot2. Nous utiliserons JCO et les palettes de couleurs “Tron Legacy”.
library("ggplot2")
library("ggsci")
# Changer la couleur de remplissage de la zone. Palette JCO
ggplot(iris, aes(Species, Sepal.Length)) +
  geom_boxplot(aes(fill = Species)) +
  scale_fill_jco()+
  theme_classic() +
  theme(legend.position = "top")

# Changer la couleur des points et la couleur de remplissage de la bande de confiance. 
# Utiliser la palette "tron" sur un thème sombre
ggplot(iris, aes(Sepal.Length, Sepal.Width)) +
  geom_point(aes(color = Species)) +
  geom_smooth(aes(color = Species, fill = Species)) + 
  scale_color_tron()+
  scale_fill_tron()+
  theme_dark() +
  theme(
    legend.position = "top",
    panel.background = element_rect(fill = "#2D2D2D2D"),
    legend.key = element_rect(fill = "#2D2D2D2D")
    )

  1. Utilisation dans les graphiques de base
par(mar = c(1, 3.5, 1, 1))
barplot(1:10, col = pal_jco()(10))

Palettes de couleurs Wes Anderson

Installerez la dernière version de développement à partir de Github (devtools::install_github("karthik/wesanderson")) ou installez depuis CRAN (install.packages("wesanderson")).

Il contient 16 palettes de couleurs des films de Wes Anderson:

library(wesanderson)
names(wes_palettes)
##  [1] "BottleRocket1"  "BottleRocket2"  "Rushmore1"      "Royal1"        
##  [5] "Royal2"         "Zissou1"        "Darjeeling1"    "Darjeeling2"   
##  [9] "Chevalier1"     "FantasticFox1"  "Moonrise1"      "Moonrise2"     
## [13] "Moonrise3"      "Cavalcanti1"    "GrandBudapest1" "GrandBudapest2"

La fonction R clé du package, pour générer un vecteur de couleurs, est la suivante

wes_palette(name, n, type = c("discrete", "continuous"))
  • name: Nom de la palette désirée
  • n: Nombre de couleurs souhaitées. Malheureusement, la plupart des palettes n’ont plus que 4 ou 5 couleurs.
  • type: Soit “continuous” ou “discrete”. Utilisez “continuous” si vous voulez interpoler automatiquement entre les couleurs.

Si vous avez besoin de plus de couleurs que d’habitude dans une palette, vous pouvez utiliser une palette continue pour interpoler les couleurs existantes.

Les palettes de couleurs disponibles sont :

Utilisation dans ggplot2:

library(wesanderson)
# Couleur discrète
bp + scale_fill_manual(values = wes_palette("GrandBudapest1", n = 3))

# Couleur dégradée
pal <- wes_palette("Zissou1", 100, type = "continuous")
ggplot(heatmap, aes(x = X2, y = X1, fill = value)) +
  geom_tile() + 
  scale_fill_gradientn(colours = pal) + 
  scale_x_discrete(expand = c(0, 0)) +
  scale_y_discrete(expand = c(0, 0)) + 
  coord_equal() 

Utilisation dans les graphiques de base:

barplot(1:10, col = wes_palette("Zissou1", 10, type = "continuous"))

Palettes de couleurs de base de R

Il y a 5 fonctions de base R qui peuvent être utilisées pour générer un vecteur de n couleurs contiguës : rainbow(n), heat.colors(n), terrain.colors(n), topo.colors(n), et cm.colors(n).

Utilisation dans les graphiques de base de R:

barplot(1:5, col=rainbow(5))
# Utiliser de "heat.colors" (couleurs chaudes)
barplot(1:5, col=heat.colors(5))
# Utiliser les couleurs du terrain
barplot(1:5, col=terrain.colors(5))
# Utiliser "topo.colors"
barplot(1:5, col=topo.colors(5))
# Utiliser "cm.colors"
barplot(1:5, col=cm.colors(5))

Conclusion

Nous présentons les top palettes de couleurs dans R pour personnaliser les graphiques générés soit par le package ggplot2 soit par les fonctions de base R. Les principaux points sont résumés comme suit.

  • Créer un ggplot de base. Affecter l’argument color à un facteur ou à une variable de groupement.
p <- ggplot(iris, aes(Sepal.Length, Sepal.Width))+
  geom_point(aes(color = Species))
p
  • Changer manuellement la palette de couleurs à l’aide d’une échelle de couleurs personnalisée:
p + scale_color_manual(values = c("#00AFBB", "#E7B800", "#FC4E07"))
  • Utilisez la palette conviviale pour les daltoniens:
cbp1 <- c("#999999", "#E69F00", "#56B4E9", "#009E73",
          "#F0E442", "#0072B2", "#D55E00", "#CC79A7")
p + scale_color_manual(values = cbp1)
  • Utiliser les palettes RColorBrewer:
p + scale_color_brewer(palette = "Dark2")
  • Utiliser les échelles de couleurs viridis:
library(viridis)
p + scale_color_viridis(discrete = TRUE)



Version: English





Comments ( 2 )

  • Pare Toudala

    Bonjour, comment allez-vous, bien j’espère. J’ai vraiment aimé ce cours sur sur la couleur des figures sur r car il a un contenu intéressant.

    • Kassambara

      Bonjour, je vous remercie pour votre commentaire, fortement apprécié!

Give a comment

Want to post an issue with R? If yes, please make sure you have read this: How to Include Reproducible R Script Examples in Datanovia Comments