knitr::opts_chunk$set( collapse = TRUE, comment = "#>", echo = TRUE ) library(ggplot2)
Nous aurons besoin du package RColorBrewer
:
RColorBrewer
est bien installélibrary(RColorBrewer)
Nous allons également avoir besoin des données fruits :
data("fruits", package = "tidyViz")
Voici trois manières de définir une couleur, qui permettent de colorier un graphe soit très rapidement (entiers), soit avec plus de possibilités (couleurs nommées) ou encore de manière très raffinée (HEX).
------- ------- ---------- ---------- ----------- --------- -------- -------------- ------- Entier 1 2 3 4 5 6 7 8 HEX #000000 #DF536B #61D04F #2297E6 #28E2E5 #CD0BBC #F5C710 #9E9E9E Couleur black indianred2 palegreen3 dodgerblue2 turquoise magenta3 darkgoldenrod1 gray62 ------- ------- ---------- ---------- ----------- --------- -------- -------------- -------
library(kableExtra) coltab <- read.table(text = "Entier 1 2 3 4 Nom black indianred2 palegreen3 dodgerblue2 HEX #000000 #DF536B #61D04F #2297E6 Entier 5 6 7 8 Nom turquoise magenta3 darkgoldenrod1 gray62 HEX #28E2E5 #CD0BBC #F5C710 #9E9E9E", comment.char = "") coltab$V2 <- cell_spec(coltab$V2, color = rep(c("black", "turquoise"), each = 3)) coltab$V3 <- cell_spec(coltab$V3, color = rep(c("indianred", "magenta"), each = 3)) coltab$V4 <- cell_spec(coltab$V4, color = rep(c("palegreen", "darkgoldenrod"), each = 3)) coltab$V5 <- cell_spec(coltab$V5, color = rep(c("dodgerblue", "gray"), each = 3)) coltab %>% kable(escape = FALSE, col.names = c("", "", "", "", ""), table.attr = "style='width:100%;'", align = c("l", "c", "c", "c", "c")) %>% kable_styling(full_width = TRUE) %>% column_spec(1, bold = FALSE, border_right = TRUE, color = "white", background = "black")
La palette de 8 couleurs par défaut de R est codée par les entiers de 1 à 8.
barplot(rep(1,8), col = 1:8)
On peut également colorier avec des "noms" de couleur (e.g. "black"
, "tomato"
, "steelblue"
, "darkorchid"
etc.)
On peut accéder à tous ces noms de couleur avec la commande colors()
:
sample(colors(), 7)
Ces couleurs "nommées" s'utilisent de la même façon que les couleurs "numériques".
On peut aussi utiliser des codes hexadécimaux pour coder une couleur dans le système de référence "Rouge - Vert - Bleu" :
hexdat <- data.frame( x = 1:6, col = rep(c("#FF0000", "#00FF00", "#0000FF"), each = 2) ) zesize <- 20 ggplot(hexdat, aes(x = x)) + geom_point(aes(color = I(col)), y = 1, size = zesize) + annotate("text", x = 0, y = 1, label = "#", size = zesize) + theme_minimal() + xlim(c(-0.2, 6.2)) + theme_void()
Voici trois commandes équivalentes pour réaliser le même graphe ci-dessous :
barplot(rep(1, 3), col = 2:4) barplot(rep(1, 3), col = c("indianred2", "palegreen3", "dodgerblue2")) barplot(rep(1, 3), col = c("#DF536B", "#61D04F", "#2297E6"))
barplot(rep(1, 3), col = 2:4)
Reproduisez le graphe ci-dessous avec le système de couleurs de votre choix :
{width=80%}
S'il y a plus d'objets à colorier que de couleurs, les couleurs sont recyclées !
par(mar = c(0, 0, 0, 0)) barplot(rep(1,80), col = 1:8, border = NA, space = 0, axes = FALSE)
Il existe de nombreux packages en R permettant de générer des palettes de couleur. Nous allons en utiliser un seul pendant ce cours : RColorBrewer
.
La commande suivante permet de visualiser toutes les palettes que ce package permet d'utiliser :
display.brewer.all()
Pour extraire des couleurs de ces palettes :
brewer.pal(n = 3, name = "Set3")
{width=100%}
Il y a trois types de palettes : séquentielles, divergentes et qualitatives.
Complétez le code suivant pour obtenir le graphe ci-contre :
pal <- brewer.pal(***, ***) barplot(rep(1, 7), col = pal, axes = ***, border = ***)
{width=100%}
On utilise la fonction de base grDevices::colorRampPalette
:
colfun <- colorRampPalette(c("darkorchid", "black", "limegreen")) barplot(rep(1, 30), col = colfun(30), axes = F, border = NA)
Reproduisez le graphe ci-contre en modifiant la commande ci-dessous.
colfun <- colorRampPalette( c(***, ***, ***)) barplot(rep(1, 100), col = colfun(100), axes = F, border = NA)
{width=100%}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.