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)









Want to Learn More on R Programming and Data Science?

Follow us by Email

by FeedBurner

On Social Networks:


 Get involved :
  Click to follow us on and Google+ :   
  Comment this article by clicking on "Discussion" button (top-right position of this page)
  Sign up as a member and post news and articles on STHDA web site.
Cette page a été vue 28055 fois