ggplot2 couleurs : Changer les couleurs automatiquement et manuellement - Logiciel R et visualisation de données


L’objectif de cet article est de décrire comment changer la couleur d’un graphique généré en utilisant le logiciel R et le package ggplot2. Une couleur peut être spécifiée soit par son nom (par exemple: “red”) ou en code hexadécimal (par exemple: “#FF1234”). Les différents systèmes de couleurs disponibles dans R sont décrits à ce lien: Couleurs dans R.

Dans ce tutoriel R, vous allez apprendre à:

  • changer les couleurs par groupes (automatiquement ou manuellement)
  • utiliser les palettes de couleurs Wes Anderson et RColorBrewer
  • utiliser les gradients de couleurs

ggplot2 couleurs - logiciel R et graphiques

Préparer les données

Les données ToothGrowth et mtcars sont utilisées dans les exemples ci-dessous:

# Convertir les colonnes dose et cyl en "facteur"
ToothGrowth$dose <- as.factor(ToothGrowth$dose)
mtcars$cyl <- as.factor(mtcars$cyl)
head(ToothGrowth)
##    len supp dose
## 1  4.2   VC  0.5
## 2 11.5   VC  0.5
## 3  7.3   VC  0.5
## 4  5.8   VC  0.5
## 5  6.4   VC  0.5
## 6 10.0   VC  0.5
head(mtcars)
##                    mpg cyl disp  hp drat    wt  qsec vs am gear carb
## Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
## Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
## Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
## Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
## Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

Assurez-vous que les variables dose et cyl soient converties en variables de types “factor” en utilisant le script de R ci-dessus.

Graphes simples

library(ggplot2)
# Box plot
ggplot(ToothGrowth, aes(x=dose, y=len)) +geom_boxplot()
# Nuage de points
ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point()

ggplot2 couleurs - logiciel R et graphiquesggplot2 couleurs - logiciel R et graphiques

Utiliser une seule couleur

# box plot
ggplot(ToothGrowth, aes(x=dose, y=len)) +
  geom_boxplot(fill='#A4A4A4', color="darkred")
# Nuage de point
ggplot(mtcars, aes(x=wt, y=mpg)) + 
  geom_point(color='darkblue')

ggplot2 couleurs - logiciel R et graphiquesggplot2 couleurs - logiciel R et graphiques

Changer les couleurs par groupes

Couleurs par défaut

Le code R suivant modifie la couleur du graphique en fonction des niveaux de dose:

# Box plot
bp<-ggplot(ToothGrowth, aes(x=dose, y=len, fill=dose)) +
  geom_boxplot()
bp
# Nuage de points
sp<-ggplot(mtcars, aes(x=wt, y=mpg, color=cyl)) + geom_point()
sp

ggplot2 couleurs - logiciel R et graphiquesggplot2 couleurs - logiciel R et graphiques

La luminosité (l) et la chrominance (c, intensité de la couleur) de la couleur par défaut (hue) peuvent être modifiées en utilisant les fonctions scale_hue comme suit:

# Box plot
bp + scale_fill_hue(l=40, c=35)
# Nuage de points
sp + scale_color_hue(l=40, c=35)

ggplot2 couleurs - logiciel R et graphiquesggplot2 couleurs - logiciel R et graphiques

Notez que les valeurs par défaut pour l et c sont les suivantes: l = 65, c = 100.

Changer les couleurs manuellement

Des palettes de couleurs personnalisées peuvent être spécifiées en utilisant les fonctions :

  • scale_fill_manual() pour un box plot, bar plot, violin plot, etc
  • scale_color_manual() pour des graphiques linéaires, ou des nuages de points
# Box plot
bp + scale_fill_manual(values=c("#999999", "#E69F00", "#56B4E9"))
# Nuage de points
sp + scale_color_manual(values=c("#999999", "#E69F00", "#56B4E9"))

ggplot2 couleurs - logiciel R et graphiquesggplot2 couleurs - logiciel R et graphiques

Notez que, l’argument breaks peut être utilisé pour contrôler l’apparence de la légende. Ceci est aussi vrai pour les autres fonctions scale_xx().

# Box plot
bp + scale_fill_manual(breaks = c("2", "1", "0.5"), 
                       values=c("red", "blue", "green"))
# Nuage de points
sp + scale_color_manual(breaks = c("8", "6", "4"),
                        values=c("red", "blue", "green"))

ggplot2 couleurs - logiciel R et graphiquesggplot2 couleurs - logiciel R et graphiques

Lire plus sur les couleurs ici : Couleurs dans R.

Utiliser les palettes de couleurs RColorBrewer

Les palettes de couleurs disponibles dans le package RColorBrewer sont décrites ici: Couleurs dans R.

# Box plot
bp + scale_fill_brewer(palette="Dark2")
# Nuage de points
sp + scale_color_brewer(palette="Dark2")

ggplot2 couleurs - logiciel R et graphiquesggplot2 couleurs - logiciel R et graphiques

Les palettes de couleurs disponibles dans le package RColorBrewer sont:

palettes de couleurs RColorBrewer

Utiliser les palettes de couleurs Wes Anderson

Installer et charger les palettes de couleurs comme suit:

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

Les palettes de couleurs disponibles sont:

palettes de couleurs Wes Anderson

library(wesanderson)
# Box plot
bp+scale_fill_manual(values=wes_palette(n=3, name="GrandBudapest"))
# Nuage de points
sp+scale_color_manual(values=wes_palette(n=3, name="GrandBudapest"))

ggplot2 couleurs - logiciel R et graphiquesggplot2 couleurs - logiciel R et graphiques

Utiliser la palette de couleurs grises

Les fonctions à utiliser sont:

  • scale_colour_grey() pour les points, lignes, etc
  • scale_fill_grey() pour les box plots, bar plots, violin plots, etc
# Box plot
bp + scale_fill_grey() + theme_classic()
# Nuage de points
sp + scale_color_grey() + theme_classic()

ggplot2 couleurs - logiciel R et graphiquesggplot2 couleurs - logiciel R et graphiques

Changer les valeurs de gris :

# Box plot
bp + scale_fill_grey(start=0.8, end=0.2) + theme_classic()
# Nuage de points
sp + scale_color_grey(start=0.8, end=0.2) + theme_classic()

ggplot2 couleurs - logiciel R et graphiquesggplot2 couleurs - logiciel R et graphiques

Notez que, les valeurs par défaut pour les arguments start et end sont: start = 0.2, end = 0.8

Couleurs continues

Le graphique peut être coloré en fonction des valeurs d’une variable continue, en utilisant les fonctions:

  • scale_color_gradient(), scale_fill_gradient() pour des gradients de couleurs séquentiels
  • scale_color_gradient2(), scale_fill_gradient2() pour des gradients divergents
  • scale_color_gradientn(), scale_fill_gradientn() pour un gradient entre n couleurs

Gradients de couleurs pour un graphique en nuage de points

Les graphiques sont colorés en utilisant la variable continue qsec:

# Colorer en fonction de la valeur de qsec
sp2<-ggplot(mtcars, aes(x=wt, y=mpg, color=qsec)) + geom_point()
sp2
# Changer les couleurs basse et haute
# Gradient sequentiel
sp2+scale_color_gradient(low="blue", high="red")
# Gradients divergents
mid<-mean(mtcars$qsec)
sp2+scale_color_gradient2(midpoint=mid,  low="blue", mid="white",
                  high="red"  space = "Lab")

ggplot2 couleurs - logiciel R et graphiquesggplot2 couleurs - logiciel R et graphiquesggplot2 couleurs - logiciel R et graphiques

Gradients de couleurs pour histogrammes

set.seed(1234)
x <- rnorm(200)
# Histogramme
hp<-qplot(x =x, fill=..count.., geom="histogram") 
hp
# Gradient séquentiel
hp+scale_fill_gradient(low="blue", high="red")

ggplot2 couleurs - logiciel R et graphiquesggplot2 couleurs - logiciel R et graphiques

Notez que, les fonctions scale_color_continuous() et scale_fill_continuous() peuvent être utilisées aussi pour les gradients de couleurs.

Gradients entre n couleurs

# Nuage de points
# Colorer les points en fonction de la variable mpg
sp3<-ggplot(mtcars, aes(x=wt, y=mpg, color=mpg)) + geom_point()
sp3
# Gradient entre n couleurs
sp3+scale_color_gradientn(colours = rainbow(5))

ggplot2 couleurs - logiciel R et graphiquesggplot2 couleurs - logiciel R et graphiques

Infos

Cette analyse a été faite en utilisant le logiciel R (ver. 3.1.2) et le package ggplot2 (ver. 1.0.0)


Enjoyed this article? I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Twitter, Facebook or Linked In.

Show me some love with the like buttons below... Thank you and please don't forget to share and comment below!!
Avez vous aimé cet article? Je vous serais très reconnaissant si vous aidiez à sa diffusion en l'envoyant par courriel à un ami ou en le partageant sur Twitter, Facebook ou Linked In.

Montrez-moi un peu d'amour avec les like ci-dessous ... Merci et n'oubliez pas, s'il vous plaît, de partager et de commenter ci-dessous!





Cette page a été vue 229620 fois