[R] Créer des palettes de couleurs

« Mere color, unspoiled by meaning, and unallied with definite form, can speak in the soul
in a thousands different ways » (Oscard Wilde)

tumblr_m60gfaRDbi1qzfya1o1_1280

En cartographie, la couleur est une variable forte, immédiatement et intensément perceptible, ce qui lui donne un fort pouvoir différentiel. Son emploi est très apprécié tant par le lecteur que par le cartographe, elle permet d’innombrables possibilités de variations visuelles et favorise l’esthétisme. Dans ce billet, je propose un moyen de construire à peu de frais des palettes de couleurs directement utilisables pour la cartographie.

le package rColorBrewer

incontournable, la palette cartographique de référence colorbrewer est aussi disponible dans R. Pour l’utiliser, il suffit d’appeler simplement le package RColorBrewer.

library("RColorBrewer")
display.brewer.all()
colors <- brewer.pal(4, "BuPu")
colors

brewer

Interpoler les couleurs

Afin de maximiser la différenciation des couleurs entre elles, la library rColorBrewer propose des palettes qui dépassent rarement 10 classes. Or, pour certains types de configuration spatiale, il peut être utile d’avoir plus de 10 classes (e.g. lorsque la configuration spatiale est graduelle). L’instruction colorRampPalette permet alors d’interpoler les couleurs pour augmenter le nombre de classes.

pal <- colorRampPalette(colors)
pal(5) # palette en 5 classes
pal(30) # palette en 30 classes

Créer ses propres palettes

Basé sur l’idée qu’une palette de couleurs complète peut se construire quasi automatiquement, le programme ci-dessous est un générateur de gammes de couleurs. Le programme repose sur 6 paramètres :
N : le nombre de classes maximum
colmin1 : La couleur la plus claire pour le nombre de classe minimum (2 classes)
colmax1 : La couleur la plus foncée pour le nombre de classes minimum (2 classes)
colmin2 : La couleur la plus claire pour le nombre de classe maximum (e.g 20 classes)
colmax2 : La couleur la plus foncée pour le nombre de classes maximum (e.g 20 classes)
colref : la couleur centrale  de référence pour cette palette de couleur

BuildColors.

Entre toutes ces valeurs, chacune des couleurs intermédiaires est générée automatiquement par interpolation (en maximisant les écarts de valeurs entre les classes foncées moins facilement différentiables). In fine, le programme génère le fichier colors.RData qui contient la liste de toutes les palettes ainsi fabriquées.

library("devtools")
setwd("your local folder")
 
# 1 - CREATION DU FICHIER colors.RData
source_url("https://raw.githubusercontent.com/neocarto/R/master/colors/BuildColors.R")
 
blues<-buildpal("#8ECEE9","#146594","#DCF0F8","#0B2130","#368ECA",20)
greens<-buildpal("#ADD39D","#1B7D34","#E5F0DA","#142F1B","#3FA136",20)
reds<-buildpal("#EFA5A9","#991915","#FBDEE1","#1D0809","#DE4243",20)
purples<-buildpal("#FFB6F1","#87036E","#FFD9FA","#3F0036","#FF00C3",20)
oranges<-buildpal("#FFB888","#AA4500","#FFE1CC","#3D1900","#FF6700",20)
nicopal<-buildpal("#FCE37A","#FF0000","#FFEB97","#E50000","#FF6700",20)
nicopal2<-buildpal("#B6EFB6","#080E5B","#B6EFB6","#080E5B","#518996",20)
 
colors<-c(blues=list(blues),reds=list(reds),greens=list(greens),purples=list(purples),oranges=list(oranges),nicopal=list(nicopal),nicopal2=list(nicopal2))
save(colors, file = "colors.RData")

Utilisation des palettes de couleur

Le programme Palettes.R permet d’appeler et afficher les palettes cartographiques dans R. Pour poursuivre, il est également nécessaire de chargé le fichier colors.RData construit précédemment.

# 2 - FABRICATION DES PALETTES CARTOGRAPHIQUES
source_url("https://raw.githubusercontent.com/neocarto/R/master/colors/Palettes.R")
load("R/colors/colors.RData")

Simples gradations

Pour créer une palette de couleurs adaptée à la cartographie, il suffit d’appeler la fonction getpal en précisant le nom de la palette choisie et le nombre de classes désirées. L’instruction displaypal permet alors d’afficher la palette de couleur dans la fenêtre graphique.

Rplot01
# Simples
mypal <- getpal("nicopal",10)
displaypal(mypal)
mypal

Doubles gradations

La fonction getpal permet également de combiner 2 palettes de couleurs entre elles pour créer une double gradation. Pour cela, il faut passer à la fonction les noms de deux palettes simples

# Doubles
mypal <- getpal("blues",8,"reds",8)
displaypal(mypal)
mypal

Rplot02

Doubles gradations (dissymétriques)

En indiquant un nombre de classes différent pour chaque palette,  getpal permet aussi de construire des gradation dissyétriques

# Doubles
mypal <- getpal("blues",3,"reds",9)
displaypal(mypal)
mypal

Rplot06

Ajouter une classe centrale (middle=T)

Lorsque le paramètre middle est égal à TRUE, une classe centrale grise est rajoutée.

# Doubles
mypal <- getpal("blues",3,"reds",9,middle=T)
displaypal(mypal)
mypal

Rplot04

Améliorer les contrastes grâce à la transparence (alphaeffect=T)

Enfin, l’option alphaeffect permet d’accenteur les contrastes en affectant graduellement de la transparence.

mypal <- getpal("blues",3,"reds",9,middle=T,alphaeffect=T)
displaypal(mypal)
mypal

Rplot05

Pratique non ?

 


Vous aimerez aussi...

Laisser un commentaire

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