Couleurs GGPlot: Meilleures Astuces que Vous Allez Adorer



Couleurs GGPlot: Meilleures Astuces que Vous Allez Adorer

Cet article présente de multiples solutions intéressantes à connaître pour changer les couleurs des graphiques.

Lors de la création de graphiques avec le package R ggplot2 , les couleurs peuvent être spécifiées soit par leur nom (ex. : “red”) soit par le code hexadécimal (ex. : “#FF1234”).

Il est également possible d’utiliser des palettes de couleurs prédéfinies disponibles dans différents packages R, tels que : viridis, RColorBrewer et *ggsci.

Dans ce tutoriel, vous apprendrez à:

  • Modifier les couleurs de ggplot en assignant une valeur de couleur unique aux fonctions géométriques (geom_point, geom_bar, `geom_line’, etc). Vous pouvez utiliser des noms de couleur de R ou des codes de couleur hexadécimaux.
  • Définir la couleur d’un ggplot par groupe (i.e. par une variable factorielle). Ceci est fait en mappant une variable de groupement aux arguments color ou fill. Dans ce cas, nous allons montrer comment changer manuellement les couleurs par défaut de ggplot2 en utilisant les fonctions suivantes scale_color_manual() and scale_fill_manual(). Ces fonctions permettent de définir une palette de couleurs personnalisée pour chaque niveau de groupe.
  • Utilisez une liste de couleurs qui sont compatibles avec les daltoniens. Les packages R tels que viridis et RColorBrewer fournissent différentes échelles de couleurs qui sont résistantes au daltonisme.
  • Utiliser des palettes de couleurs ggplot prédéfinies.
  • Changer la couleur d’un dégradé de ggplot (aussi connu sous le nom de couleur continue). Pour créer un dégradé de couleur dans ggplot2, une variable continue est mappée aux options color or fill. Il existe trois types différents de fonctions pour modifier le gradient de couleur par défaut de ggplot2, notamment scale_color_gradient(),scale_color_gradient2(), scale_color_gradientn(). Les mêmes fonctions “scale” existent pour le fill arguments: scale_fill_gradient(), scale_fill_gradient2(), scale_fill_gradientn(). Nous allons décrire étape par étape comment les utiliser.


Sommaire:

Livre Apparenté

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

Fonctions clés de ggplot2

Cette section présente la fonction R clé de ggplot2 pour changer la couleur d’un graphique.

Définir manuellement la couleur de ggplot:

  • scale_fill_manual() pour box plot, bar plot, violin plot, dot plot, etc
  • scale_color_manual() ou scale_colour_manual() pour les lignes et les points

Utiliser les palettes colorbrewer:

  • scale_fill_brewer() pour box plot, bar plot, violin plot, dot plot, etc
  • scale_color_brewer() ou `scale_colour_brewer()’ pour les lignes et les points

Utiliser des échelles de couleurs grises:

  • scale_fill_grey() pour box plot, bar plot, violin plot, dot plot, etc
  • scale_colour_grey() ou scale_colour_brewer() pour les points, lignes, etc

Modifier la couleur par défaut du dégradé du graphique ggplot:

  • scale_color_gradient()``scale_fill_gradient() pour les dégradés séquentiels entre deux couleurs
  • scale_color_gradient2(), scale_fill_gradient2() pour les gradients divergents
  • scale_color_gradientn(), scale_fill_gradientn() pour le dégradé entre n couleurs

Prérequis

  1. Charger le package ggplot2 et définir le thème par défaut:
library(ggplot2)
theme_set(
  theme_minimal() +
    theme(legend.position = "right")
  )
  1. Initialiser des ggplots en utilisant le jeu de données iris. Créer un box plot (bp) et un diagramme de dispersion (sp, pour scatter plot) que nous personnaliserons dans la section suivante:
# Box plot
bp <- ggplot(iris, aes(Species, Sepal.Length))

# Diagramme de dispersion
sp <- ggplot(iris, aes(Sepal.Length, Sepal.Width))

Spécifier une couleur unique

Colors in R can be specified either by name (e.g.: “red”) or by hexadecimal color codes, such as “#FF1234”. Vous trouverez de nombreux exemples de noms et de codes de couleurs à l’adresse suivante:

Le script R suivant change la couleur de remplissage (dans les box plots) et la couleur des points (dans les diagrammes de dispersion).

  • Utilisation de codes de couleur hexadécimaux:
# Box plot
bp + geom_boxplot(fill = "#FFDB6D", color = "#C4961A")

# Diagramme de dispersion
sp + geom_point(color = "#00AFBB") 

  • Utilisation des noms de couleurs
# Box plot
bp + geom_boxplot(fill = "lightgray", color = "black")

# Diagramme de dispersion
sp + geom_point(color = "steelblue") 

Changer les couleurs par groupes : couleurs par défaut de ggplot

Vous pouvez définir les couleurs en fonction des niveaux 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 l’exemple suivant, nous allons mapper les options color et fill à la variable de groupement Species, pour le nuage de points et les box plots, respectivement.

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

# Box plot
bp <- bp + geom_boxplot(aes(fill = Species)) +
  theme(legend.position = "top")
bp

# Diagramme de dispersion
sp <- sp + geom_point(aes(color = Species)) +
  theme(legend.position = "top")
sp

Définir des palettes de couleurs personnalisées

Il est possible de régler manuellement les palettes de couleurs à l’aide des fonctions suivantes:

  • scale_fill_manual() pour box plot, bar plot, violin plot, dot plot, etc
  • scale_color_manual() ou scale_colour_manual() pour les lignes et les points
# Box plot
bp + scale_fill_manual(values = c("#00AFBB", "#E7B800", "#FC4E07"))

# Diagramme de dispersion
sp + scale_color_manual(values = c("#00AFBB", "#E7B800", "#FC4E07"))

Vous pourriez aussi trouver intéressant, la liste suivante de couleurs:

custom.col <- c("#FFDB6D", "#C4961A", "#F4EDCA", 
                "#D16103", "#C3D7A4", "#52854C", "#4E84C4", "#293352")

Utilisez une palette adaptée aux daltoniens

Lors de la sélection d’un ensemble de couleurs, il est recommandé de vous assurer que vous choisissez des palettes de couleurs résistantes au daltonisme. Dans les sections suivantes, nous vous montrerons comment vérifier que vos figures en production sont compatibles avec les daltoniens.

Nous présentons ici deux palettes adaptées aux daltoniens, l’une grise et l’autre noire (palettes source : http://jfly.iam.u-tokyo.ac.jp/color/).

# La palette avec le gris:
cbp1 <- c("#999999", "#E69F00", "#56B4E9", "#009E73",
          "#F0E442", "#0072B2", "#D55E00", "#CC79A7")

# La palette avec le noir:
cbp2 <- c("#000000", "#E69F00", "#56B4E9", "#009E73",
          "#F0E442", "#0072B2", "#D55E00", "#CC79A7")

Vous pouvez utiliser ces palettes comme suit:

# Pour utiliser pour les remplissages, ajoutez
bp + scale_fill_manual(values = cbp1)

# Pour utiliser les couleurs de lignes et de points, ajoutez
sp + scale_colour_manual(values=cbp1)

Palettes de couleurs ggplot prédéfinies

Vous pouvez modifier les couleurs par défaut de ggplot en utilisant des palettes de couleurs prédéfinies disponibles dans différents packages R. Les échelles de couleurs les plus couramment utilisées sont les suivantes:

  • 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]

Pour en savoir plus, consultez la page : Top Palettes de Couleurs R à Connaître pour une Meilleur Visualisation des Données

Palettes de couleurs Viridis

Le package Rviridis fournit des palettes de couleurs pour créer de magnifiques graphiques qui sont : imprimables, uniformes au niveau de la perception et faciles à lire pour les personnes daltoniennes. Fonctions clés scale_color_viridis() and scale_fill_viridis()

library(viridis)
# Couleur dégradée
ggplot(iris, aes(Sepal.Length, Sepal.Width))+
  geom_point(aes(color = Sepal.Length)) +
  scale_color_viridis(option = "D")

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

Palettes RColorBrewer

Le package RColorBrewer crée de jolies palettes de couleurs. Plus d’informations ici : Palette de Couleurs RColorBrewer de A -à- Z

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

Par exemple:

# Box plot
bp + scale_fill_brewer(palette = "Dark2")

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

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

library(RColorBrewer)
display.brewer.all(colorblindFriendly = TRUE)

Palettes de couleurs grises

Fonctions clés disponibles dans ggplot2:

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

  1. Utilisation dans ggplot2. Nous utiliserons JCO et les palettes de couleurs “Tron Legacy”.
library("ggsci")
# Changer la couleur de remplissage de la zone à l'aide de la palette jco
bp + scale_fill_jco()


# Changer la couleur du point 
sp + scale_color_jco()

Pour en savoir plus, consultez la page : Top Palettes de Couleurs R à Connaître pour une Meilleur Visualisation des Données

Palettes de couleurs Wes Anderson

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"

Les palettes de couleurs disponibles sont illustrées dans le tableau ci-dessous :

Vous pouvez utiliser les différentes palettes comme couleurs discrètes ou continues dans ggplot2, comme suit:

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

Pour en savoir plus, consultez la page : Top Palettes de Couleurs R à Connaître pour une Meilleur Visualisation des Données

Dégradé ou couleurs continues



Couleurs ggplot par défaut du dégradé

Pour les couleurs en dégradé, vous devez mapper l’argument color et/ou fill à une variable continue. Le réglage par défaut de ggplot2 pour les couleurs dégradées est une couleur bleue continue.

Dans l’exemple suivant, nous colorions les points en fonction de la variable: Sepal.Length.

sp2 <- ggplot(iris, aes(Sepal.Length, Sepal.Width))+
  geom_point(aes(color = Sepal.Length))

Fonctions clés pour changer les couleurs du dégradé par défaut

La couleur du dégradé par défaut peut être modifiée à l’aide des fonctions ggplot2 suivantes:

  • scale_color_gradient()``scale_fill_gradient() pour les dégradés séquentiels entre deux couleurs
  • scale_color_gradient2(), scale_fill_gradient2() pour les gradients divergents
  • scale_color_gradientn(), scale_fill_gradientn() pour le dégradé entre n couleurs

Définir le dégradé entre deux couleurs

Modifier les couleurs pour les extrémités basse (low) et haute (high) du dégradé:

# Schéma de couleurs séquentielles. 
# Spécifiez les couleurs pour les extrémités basse et haute du dégradé
sp2 + scale_color_gradient(low = "blue", high = "red")

# Schéma de couleurs divergentes
# Spécifiez également la couleur du point médian
mid <- mean(iris$Sepal.Length)
sp2 + scale_color_gradient2(midpoint = mid, low = "blue", mid = "white",
                            high = "red", space = "Lab" )

Notez que les fonctions scale_color_continuous() et scale_fill_continuous() peuvent également être utilisées pour définir les couleurs en dégradé ou gradient.

Définir le gradient entre n couleurs

Dans l’exemple ci-dessous, nous allons utiliser la fonction de base R rainbow() pour générer un vecteur de 5 couleurs, qui sera utilisé pour définir les couleurs du dégradé.

sp2 + scale_color_gradientn(colours = rainbow(5))

Conclusion

Cet article présente comment personnaliser les couleurs de ggplot. 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





No Comments

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