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 30288 fois
Licence - Pas d?Utilisation Commerciale - Partage dans les M?mes Conditions
Licence Creative Commons