Comment modifier les couleurs avec ggplot2 ?

 

Quand on commence à utiliser le package ggplot2, la question de la gestion des couleurs se pose en général assez rapidement. Cet article a pour but de vous aider dans cette étape, en vous montrant quelques fonctions, outils, et autres ressources utiles.

 

Table des matières :

  • 1. La différence entre “colour” et “fill”
  • 2. Les fonctions de couleurs du package ggplot2
  • 3. Modifier les couleurs des points en fonction d’une variable continue
  • 4 Modifier les couleurs des points en fonction d’une variable catégorielle
  • 5. Modifier les couleurs des barre ou des boites en fonction d’une variable catégorielle
  • 6. Quelques fonctions utiles au sujet des couleurs
  • 7. Créer sa propre palette
  • 8. Pour aller plus loin
  • Conclusion

Les données utilisées dans les exemples sont celle du jeu de données iris. Il est constitué de quatre variables numériques “Sepal.Length”, “Sepal.Width”, “Petal.Length”, “Petal.Width”, et d’une variable catégorielle : “Species” (setosa/versicolor/virginica). Voici les six premières lignes de ce jeu de données :

 

1 La différence entre “colour” et “fill”

A mon sens, une des premières chose à bien comprendre est que ggplot2 utilise le terme “colour” (ou color d’ailleurs) pour tout ce qui concerne la couleur des points ou des lignes, et le terme “fill” pour tout ce qui concerne la couleur des boites (barplot, boxplot, etc…).

Par exemple, pour donner une couleur différente aux points, en fonction de leur appartenance à l’une des trois espèce d’iris (setosa/versicolor/virginica), il faut utiliser “colour=Species” en argument de la fonction de mappage “aes()” associée à la fonction “geom_point()”, comme ceci :

 

couleur ggplot2

 

De même, si l’on souhaite accorder les couleurs des points en fonction de la valeur d’une variable numérique (ici Petal.Width) :

couleur ggplot2 R

 

En revanche, il est nécessaire d’utiliser “fill=Species” en argument de la fonction de mappage “aes()” lorsque la fonction est relative à une boite, comme ici avec geom_boxplot() :

 

couleurs boxplot ggplot2

Remarque : on peut utiliser l’argument “aes(colour=Species))” en argument de la fonction gom_boxplot, mais dans ce cas-là, seul le contour des boites est modifié.

 

2 Les fonctions de couleurs du package ggplot2

Il existe de nombreuse fonctions pour gérer les couleurs avec ggplot2. Cela peut être un peu intimidant au début, mais en réalité, il s’agit seulement de variantes.

Les fonctions qui permettent de gérer les couleurs des points et des lignes commencent par “scale_colour_“, et celles qui permettent de gérer les couleurs des boites commencent par “scale_fill_“.

Pour connaître toutes les fonctions disponibles, vous pouvez commencer à écrire, par exemple, “scale_colour” dans la console, puis appuyer sur Tab. Si vous utilisez la saisie automatique, la liste des fonctions apparaîtra automatiquement dans un fenêtre. La configuration de la saisie automatique est décrite dans cet article.

Vous pouvez également utiliser la commande ls(“package:ggplot2”).

 

En plus de cette distinction entre “colour” et “fill” , certaines fonctions s’appliquent lorsque la variable qui va service de base à la gestion des couleurs est de type catégorielle (cas du premier scaterplot du paragraphe 1 : la couleur est régie par la variable “Species”) ou numérique (cas du second scatterplot du paragraphe 1-la couleur est régie par la variable “Petal.Width”).

Si ça vous semble compliqué, pas de panique, on va voir cela avec des exemples !

3. Modifier les couleurs des points en fonction d’une variable continue

Pour cela, on peut utiliser différentes sortes de gradient, qui correspondent à des fonctions différentes :

  • scale_color_gradient : pour un gradient séquentiel simple
  • scale_colour_gradient2 : pour un gradient divergent (une couleur forte qui se dégrade puis une autre couleur forte qui augmente)
  • scale_colour_gradientn : pour des gradients avec plus de 2 couleurs
  • scale_colour_continuous et scale_colour_viridis : pour utiliser des gradients prédéfinis.

 

 

3.1 Gradient séquentiel

R ggplot2 couleur gradient

3.2 Gradient divergent

On peut aussi réaliser un gradient de couleurs en fixant la couleur médiane et son niveau. Par exemple ici, la couleur blanche à 1.3.

 

dégradé de couleurs

3.3 Gradient avec plus de 2 couleurs

Par exemple ici avec 5 couleurs :

 

gradient de chaleurs couleur ggplot2

3.4 Gradients prédéfinis

 

gradient viridis

 

Pour utiliser la fonction “ scale_colour_viridis” il est nécessaire de charger le package “viridis”:

 

gradient viridis magma

 

Les autres options possibles sont “inferno”, “plasma” et “cividis”.

 

 

4 Modifier les couleurs des points en fonction d’une variable catégorielle :

Dans cette situation, les principales fonctions à utiliser sont :

  • scale_colour_manual() : pour choisir manuellement les couleurs
  • scale_colour_brewer() : pour utiliser des palettes prédéfinies de type séquentiel, divergente, ou qualitative.

4.1 En choisissant les couleurs manuellement

Pour cela, on utilise la fonction “scale_colour_manual()” :

 

couleur ggplot2

 

Vous pouvez retrouver les noms des couleurs sur ce documentet sur celui là.
Vous pouvez également choisir les couleurs en utilisant l’addin “colour picker”.

4.2 En utilisant une palette prédéfinie

Le package ggplot2 intègre des palettes prédéfinies, qui proviennent du package RColorBrewer.

4.2.1 Une palette séquentielle

 

couleurs r ggplot2

Cela peut avoir un intérêt lorsque la variable qualitative est ordonnée comme “faible”, “moyen” et “fort”.

Les palettes séquentielles disponibles sont:

palette ggplot2

4.2.2 En utilisant une palette divergente

 

palette divergente

Cette palette peut être vraiment intéressante pour représenter les modalités d’une variable de statisfaction, par exemple “extrêmement satisfait” / “très satisfait” / “satisfait” / “moins satisfait” / “pas du tout satisfait”.

Les palettes divergentes disponibles dans ggplot2 sont :

palette divergente ggplot2

4.2.3 En utilisant une palette qualitative

 

Les palettes qualitatives disponibles sont:

palette ggplot2

 

 

 

5. Modifier les couleurs des barres ou des boites en fonction d’une variable catégorielle :

Cela se passe comme précédemment, en utilisant les fonctions “scale_fill_“, à la place de “scale_colour_”.

5.1 Modifier les couleurs manuellement :

 

couleurs boxplot

5.2 En utilisant une palette prédéfinie :

5.2.1 Palette séquentielle :

 

palette séquentielle boxplot

 

5.2.2 Palette divergente

 

boxplot palette divergente

 

5.2.3 Palette qualitative

 

palette qualitative ggplot2

 

6. Quelques fonctions utiles au sujet des couleurs

6.1 Obtenir les codes des couleurs utilisées par défaut par ggplot2

Pour cela, on utilise la fonctionshow_col()“, du package “scales”:

 

couleurs par défaut ggplot2

 

couleurs ggplot2 défaut

6.2 Obtenir les codes couleurs d’une palette prédéfinie

Par exemple ici les codes de 7 couleurs de la palette séquentielle Purples.

 

code couleurs

 

7. Créer sa propre palette

7.1 Une palette de couleurs selon une charte graphique :

Pour cela, je vous renvoie sur l’excellent article de Simon Jackson :
Creating corporate colour palettes for ggplot2

7.2 Une palette de couleurs à partir d’une image

En utilisant le package “palleter”, il est possible de constituer une palette à partir des couleurs d’une image. Le package utilise un algorithme basé sur la méthode des kmeans.

 

 

Crédit photo : Garen

 

couleurs ggplot2

 

 

Vous trouverez plus d’infos sur le package palletter ici.

Remarque : cette fonction peut également être utilisée pour retrouver les codes couleurs d’une charte graphique :

 

 

8. Pour aller plus loin

 

Conclusion

J’espère que cet article vous permettra de passer l’étape de la gestion des couleurs avec ggplot2 sans trop de difficultés. Et si cet article vous a plus, ou vous a été utile, n’oubliez pas de le partager 😉

 

Continuez votre lecture :

 

Partager l'article
  •  
  •  
  •  
  •  
  •  
    4
    Partages
  • 4
  •  
  •  
  •  
  •  

1 Commentaire

  1. Dio DEMBELE Répondre

    Hello Claire,
    Merci beaucoup pour tous tes articles qui me permettent de découvrir petit à petit l’univers du logiciel R. Merci infiniment.
    Pourrais tu consacrer un article à la cartographie avec R? Merci d’avance.
    Dio DEMBELE

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *