16 Couleurs & Palettes
Dans les prochains chapitres, notamment lorsque nous ferons des graphiques, nous aurons besoin de spécifier à R les couleurs souhaitées.
Le choix d’une palette de couleurs adaptée à sa représentation graphique est également un élément essentiel avec quelques règles de base : un dégradé est adapté pour représentée une variable continue tandis que pour une variable catégorielle non ordonnée on aura recours à une palette contrastée.
16.1 Noms de couleur
Lorsque l’on doit indiquer à R une couleur, notamment dans les fonctions graphiques, on peut mentionner certaines couleurs en toutes lettres (en anglais) comme "red" ou "blue". La liste des couleurs reconnues par R est disponible sur http://www.stat.columbia.edu/~tzheng/files/Rcolor.pdf.
16.2 Couleurs RVB et code hexadécimal
En informatique, les couleurs sont usuellement codées en Rouge/Vert/Bleu (voir https://fr.wikipedia.org/wiki/Rouge_vert_bleu) et représentées par un code hexadécimal à 6 caractères (chiffres 0 à 9 et/ou lettres A à F), précédés du symbole #. Ce code est reconnu par R. On pourra par exemple indiquer "#FF0000" pour la couleur rouge ou "#666666" pour un gris foncé. Le code hexadécimal des différentes couleurs peut s’obtenir aisément sur internet, de nombreux sites étant consacrés aux palettes de couleurs.
Parfois, au lieu du code hexadécimal, les couleurs RVB sont indiquées avec trois chiffres entiers compris entre 0 et 255. La conversion en hexadécimal se fait avec la fonction grDevices::rgb().
16.3 Palettes de couleurs
16.3.1 Color Brewer
Le projet Color Brewer a développé des palettes cartographiques, à la fois séquentielles, divergentes et catégorielles, présentées en détail sur http://colorbrewer2.org/. Pour chaque type de palette, et en fonction du nombre de classes, est indiqué sur ce site si la palette est adaptée aux personnes souffrant de daltonisme, si elle est rendra correctement sur écran, en cas d’impression couleur et en cas d’impression en noir et blanc.
Voici un aperçu des différentes palettes disponibles :
L’extension {RColorBrewer} permets d’accéder à ces palettes sous R.
Si on utilise ggplot2, les palettes Color Brewer sont directement disponibles via les fonctions ggplot2::scale_fill_brewer() et ggplot2::scale_colour_brewer().
Les palettes Color Brewer sont seulement implémentées pour des variables catégorielles. Il est cependant possible de les utiliser avec des variables continues en les combinant avec ggplot2::scale_fill_gradientn() ou ggplot2::scale_coulour_gradientn() (en remplaçant "Set1" par le nom de la palette désirée) :
16.3.2 Palettes de Paul Tol
Le physicien Paul Tol a développé plusieurs palettes de couleurs adaptées aux personnes souffrant de déficit de perception des couleurs (daltonisme). Ses palettes sont aussi pensées pour fonctionner à la fois sur écran et imprimées sur paper ou pour conserver suffisamment de contrastes lors d’un passage en niveaux de gris. À titre personnel, il s’agit des palettes de couleurs que j’utilise le plus fréquemment.
Le détail de ses travaux est présenté sur https://personal.sron.nl/~pault/.
Le package khroma implémente ces palettes de couleurs proposées par Paul Tol afin de pouvoir les utilisées directement dans R et avec {ggplot}.
Les palettes bright et muted sont adaptées pour des variables catégorielles.
Les palettes séquentielles comme iridescent sont, quant à elles, adaptées pour des variables continues.
Les palettes divergentes telles que nightfall sont, quant à elles, plus adaptées à une variable continue ayant un point central (par exemple des températures négatives et positives).
Il existe une palette arc-en-ciel couvrant un large spectre de couleurs, mais que l’on évitera pour une variable continue, car il est préférable d’avoir soit une palette séquentielle monochromatique ou, selon le cas, une palette divergente bichromatique.
Pour la liste complète des palettes disponibles, voir https://packages.tesselle.org/khroma/articles/tol.html.
16.3.3 La palette safe
de {guideR}
Au quotidien, où il est fréquent d’avoir à représenter une variable catégorielle, la palette bright de Paul Tol est bien adaptée. Cependant, sa grosse limite est de ne comporter que 7 couleurs, dont un gris usuellement réservé aux valeurs manquantes.
C’est pourquoi guideR propose une palette guideR::safe_pal() avec une stratégie s’adaptant au nombre de couleurs requises :
entre 1 et 6 couleurs : utilisation de la palette bright (sans le gris) ;
entre 7 et 9 couleurs : utilisation de la palette muted ;
pour 10 couleurs ou plus : utilisation de la palette rainbow avec un réordonancement aléatoire des couleurs puis conserver le rendu qualitatif.
Pour utiliser ces palettes avec ggplot2, on pourra utiliser guideR::scale_colour_safe() ou guideR::scale_fill_safe().
16.3.4 Interface unifiée avec {paletteer}
L’extension paletteer vise à proposer une interface unifiée pour l’utilisation de palettes de couleurs fournies par d’autres packages (dont khroma, mais aussi par exemple ggsci qui fournit les palettes utilisées par certaines revues scientifiques). Plus de 2 500 palettes sont ainsi disponibles.
On peut afficher un aperçu des principales palettes disponibles dans paletteer avec la commande suivante :
Pour afficher la liste complète des palettes discrètes et continues, on utilisera les commandes suivantes :
La fonction paletteer::paletteer_d() permet d’obtenir les codes hexadécimaux d’une palette discrète en précisant le nombre de couleurs attendues. Les fonctions paletteer::scale_color_paletteer_d() et paletteer::scale_fill_paletteer_d() permettront d’utiliser une palette donnée avec ggplot2.
<colors>
#4477AAFF #EE6677FF #228833FF #CCBB44FF #66CCEEFF
L’équivalent existe pour les palettes continues, avec paletteer::paletteer_c(), paletteer::scale_color_paletteer_c() et paletteer::scale_fill_paletteer_c() .














