Une version actualisée de ce chapitre est disponible sur guide-R : Couleurs & Palettes

Ce chapitre est évoqué dans le webin-R #08 (ggplot2 et la grammaires des graphiques) sur YouTube.

Ce chapitre est évoqué dans le webin-R #13 (exemples de graphiques avancés) sur YouTube.

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.

Couleurs RVB

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, précédés du symbole #. Ce code est reconnu par R et on pourra par exemple indiquer "#FF0000" pour la couleur rouge. 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 rgb.

rgb(255, 0, 0, maxColorValue = 255)
[1] "#FF0000"

Palettes de couleurs

Palettes natives

R fournit nativement quelques palettes de couleurs continues telles que rainbow, heat.colors, terrain.colors, topo.colors ou encore cm.colors.

Voici un aperçu de ces palettes de couleurs :

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 scale_fill_brewer et scale_colour_brewer.

ATTENTION : 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 combinants avec scale_fill_gradientn ou scale_coulour_gradientn (en remplaçant "Set1" par le nom de la palette désirée) :

scale_fill_gradientn(values = RColorBrewer::brewer.pal(6, "Set1"))

Viridis

Les palettes de couleurs de la famille Viridis ont initialement été créées pour Matplolib de telles manières que :

  • les couleurs sont perçues de manière uniformes, même lorsqu’elles sont imprimées en noir et blanc ;
  • les couleurs sont distinguées par les formes les plus courantes de daltonisme.

Voici un aperçu des différentes palettes de cette famille :

Ces palettes sont accessibles de manière générale via l’extension viridis.

Elles sont également implémentées dans gpplot2 via les fonctions scale_fill_viridis_c et scale_colour_viridis_c pour des variables continues et scale_fill_viridis_d et scale_colour_viridis_d pour des variables discrètes.

ggsci

L’extension ggsci fournie plusieurs palettes de couleurs inspirées de journaux scientifiques (comme le Lancet ou le New England Journal of Medicine) mais aussi de séries/films (comme les Simpsons ou Star Trek).

On y trouve également des palettes continues basées sur Material Design de Google.

Toutes ces palettes sont directement utilisables avec ggplot2.

Plus d’informations sur https://cran.r-project.org/web/packages/ggsci/vignettes/ggsci.html.

hrbrthemes

L’extension hrbrthemes propose deux palettes discrètes : ipsum_pal et ft_pal ainsi que les fonctions correspondantes pour ggplot2.

library(hrbrthemes)
scales::show_col(ipsum_pal()(9))

scales::show_col(ft_pal()(9))

ggthemes

L’extension ggthemes fournit plusieurs palettes de couleurs, en particulier few_pal issue de l’ouvrage Show Me the Numbers (2012) de Stephen Few ; colorblind_pal adaptées aux personnes daltoniennes ; ptol_pal inspirée de l’ouvrage Colour Schemes (2012) de Paul Tol ; et diverses autres (voir https://jrnold.github.io/ggthemes/).

library(ggthemes)
scales::show_col(few_pal()(8))

scales::show_col(few_pal("Dark")(8))

scales::show_col(colorblind_pal()(8))

scales::show_col(ptol_pal()(12))

khroma

L’extension khroma implémente elle aussi les palettes de couleurs proposées par Paul Tol dans Colour Schemes (2012) mais de manière plus complète que ggthemes.

library(khroma)
plot_scheme(colour("bright")(7), colours = TRUE)

library(ggplot2)
p <- ggplot(mpg) +
  aes(x = displ, y = hwy, colour = class) +
  geom_point()
p + scale_colour_bright()

plot_scheme(colour("vibrant")(7), colours = TRUE)

p + scale_colour_vibrant()

plot_scheme(colour("muted")(9), colours = TRUE)

p + scale_colour_muted()

Pour plus de détails, voir https://khroma.archaeo.science/articles/tol.html

paletteer

L’extension paletteer vise à proposer une interface unifiée pour l’utilisation de palettes de couleurs fournies par d’autres extensions.

scale_color_paletteer_d et scale_color_paletteer_c permettent de sélectionner une des palettes disponibles avec un usage avec ggplot2. Il existe bien entendu leur équivalent pour l’esthétique fill.

library(paletteer)
ggplot(iris) +
  aes(Sepal.Length, Sepal.Width, color = Species) +
  geom_point() +
  scale_color_paletteer_d("nord::aurora")

Voici une liste de palettes disponibles via paletteer :

Package and Palette Name Color Count and Palette
awtools
a_palette 8
ppalette 8
bpalette 16
gpalette 4
mpalette 9
spalette 6
dichromat
BrowntoBlue_10 10
BrowntoBlue_12 12
BluetoDarkOrange_12 12
BluetoDarkOrange_18 18
DarkRedtoBlue_12 12
DarkRedtoBlue_18 18
BluetoGreen_14 14
BluetoGray_8 8
BluetoOrangeRed_14 14
BluetoOrange_10 10
BluetoOrange_12 12
BluetoOrange_8 8
LightBluetoDarkBlue_10 10
LightBluetoDarkBlue_7 7
Categorical_12 12
GreentoMagenta_16 16
SteppedSequential_5 25
dutchmasters
milkmaid 13
pearl_earring 11
view_of_Delft 12
little_street 11
anatomy 7
staalmeesters 7
ggsci
nrc_npg 10
default_aaas 10
default_nejm 8
lanonc_lancet 9
default_jama 7
default_jco 10
default_ucscgb 26
category10_d3 10
category20_d3 20
category20b_d3 20
category20c_d3 20
default_igv 51
alternating_igv 2
default_locuszoom 7
default_uchicago 9
light_uchicago 9
dark_uchicago 9
hallmarks_dark_cosmic 10
hallmarks_light_cosmic 10
signature_substitutions_cosmic 6
springfield_simpsons 16
planetexpress_futurama 12
schwifty_rickandmorty 12
uniform_startrek 7
legacy_tron 7
default_gsea 12
red_material 10
pink_material 10
purple_material 10
deep_purple_material 10
indigo_material 10
blue_material 10
light_blue_material 10
cyan_material 10
teal_material 10
green_material 10
light_green_material 10
lime_material 10
yellow_material 10
amber_material 10
orange_material 10
deep_orange_material 10
brown_material 10
grey_material 10
blue_grey_material 10
ggpomological
pomological_base 7
pomological_palette 9
ggthemes
calc 12
manyeys 19
gdoc 10
fivethirtyeight 6
colorblind 8
Tableau_10 10
Tableau_20 20
Color_Blind 10
Seattle_Grays 5
Traffic 9
Miller_Stone 11
Superfishel_Stone 10
Nuriel_Stone 9
Jewel_Bright 9
Summer 8
Winter 10
Green_Orange_Teal 12
Red_Blue_Brown 12
Purple_Pink_Gray 12
Hue_Circle 19
Classic_10 10
Classic_10_Medium 10
Classic_10_Light 10
Classic_20 20
Classic_Gray_5 5
Classic_Color_Blind 10
Classic_Traffic_Light 9
Classic_Purple_Gray_6 6
Classic_Purple_Gray_12 12
Classic_Green_Orange_6 6
Classic_Green_Orange_12 12
Classic_Blue_Red_6 6
Classic_Blue_Red_12 12
Classic_Cyclic 13
few_Light 9
few_Medium 9
few_Dark 9
excel_Atlas 6
excel_Badge 6
excel_Berlin 6
excel_Celestial 6
excel_Crop 6
excel_Depth 6
excel_Droplet 6
excel_Facet 6
excel_Feathered 6
excel_Gallery 6
excel_Headlines 6
excel_Integral 6
excel_Ion_Boardroom 6
excel_Ion 6
excel_Madison 6
excel_Main_Event 6
excel_Mesh 6
excel_Office_Theme 6
excel_Organic 6
excel_Parallax 6
excel_Parcel 6
excel_Retrospect 6
excel_Savon 6
excel_Slice 6
excel_Vapor_Trail 6
excel_View 6
excel_Wisp 6
excel_Wood_Type 6
excel_Aspect 6
excel_Blue_Green 6
excel_Blue_II 6
excel_Blue_Warm 6
excel_Blue 6
excel_Grayscale 6
excel_Green_Yellow 6
excel_Green 6
excel_Marquee 6
excel_Median 6
excel_Office_2007_2010 6
excel_Orange_Red 6
excel_Orange 6
excel_Paper 6
excel_Red_Orange 6
excel_Red_Violet 6
excel_Red 6
excel_Slipstream 6
excel_Violet_II 6
excel_Violet 6
excel_Yellow_Orange 6
excel_Yellow 6
wsj_rgby 4
wsj_red_green 2
wsj_black_green 4
wsj_dem_rep 3
wsj_colors6 6
stata_s2color 15
stata_s1rcolor 15
stata_s1color 15
stata_mono 15
stata_economist 15
hc_default 10
hc_darkunica 11
hc_bg 5
hc_fg 12
ghibli
MarnieLight1 7
MarnieMedium1 7
MarnieDark1 7
MarnieLight2 7
MarnieMedium2 7
MarnieDark2 7
PonyoLight 7
PonyoMedium 7
PonyoDark 7
LaputaLight 7
LaputaMedium 7
LaputaDark 7
MononokeLight 7
MononokeMedium 7
MononokeDark 7
SpiritedLight 7
SpiritedMedium 7
SpiritedDark 7
YesterdayLight 7
YesterdayMedium 7
YesterdayDark 7
KikiLight 7
KikiMedium 7
KikiDark 7
TotoroLight 7
TotoroMedium 7
TotoroDark 7
grDevices
blues9 9
jcolors
default 5
pal2 5
pal3 5
pal4 6
pal5 6
pal6 8
pal7 8
pal8 12
pal9 6
pal10 10
pal11 12
pal12 13
rainbow 9
LaCroixColoR
PassionFruit 6
Mango 6
Pure 6
Lime 6
Lemon 6
Orange 6
Berry 6
CranRaspberry 6
Pamplemousse 6
PeachPear 6
Coconut 6
Apricot 6
Tangerine 7
KeyLime 5
PommeBaya 5
CeriseLimon 6
PinaFraise 6
KiwiSandia 7
MelonPomelo 6
MurePepino 6
paired 14
NineteenEightyR
cobra 6
electronic_night 5
hotpink 5
malibu 5
miami1 5
miami2 5
seventies_aint_done_yet 5
sonny 5
sunset1 5
sunset2 5
sunset3 5
youngturqs 12
nord
polarnight 4
snowstorm 3
frost 4
aurora 5
lumina 5
mountain_forms 5
silver_mine 5
lake_superior 6
victory_bonds 5
halifax_harbor 6
moose_pond 8
algoma_forest 7
rocky_mountain 6
red_mountain 8
baie_mouton 7
afternoon_prarie 9
ochRe
namatjira_qual 8
namatjira_div 8
mccrea 11
parliament 8
tasmania 7
nolan_ned 5
winmar 7
olsen_qual 6
olsen_seq 14
williams_pilbara 7
healthy_reef 9
emu_woman_paired 18
galah 6
lorikeet 6
dead_reef 6
jumping_frog 5
palettetown
bulbasaur 13
ivysaur 13
venusaur 14
charmander 13
charmeleon 12
charizard 14
squirtle 14
wartortle 13
blastoise 14
caterpie 12
metapod 5
butterfree 13
weedle 11
kakuna 8
beedrill 14
pidgey 12
pidgeotto 13
pidgeot 14
rattata 13
raticate 13
spearow 15
fearow 12
ekans 12
arbok 10
pikachu 10
raichu 14
sandshrew 10
sandslash 13
nidoranf 11
nidorina 13
nidoqueen 13
nidoranm 10
nidorino 12
nidoking 11
clefairy 13
clefable 12
vulpix 13
ninetales 7
jigglypuff 11
wigglytuff 12
zubat 11
golbat 11
oddish 10
gloom 14
vileplume 13
paras 12
parasect 11
venonat 14
venomoth 11
diglett 4
dugtrio 12
meowth 13
persian 12
psyduck 10
golduck 13
mankey 14
primeape 15
growlithe 11
arcanine 14
poliwag 11
poliwhirl 9
poliwrath 9
abra 8
kadabra 14
alakazam 12
machop 13
machoke 13
machamp 13
bellsprout 13
weepinbell 14
victreebel 14
tentacool 14
tentacruel 14
geodude 6
graveler 6
golem 12
ponyta 11
rapidash 11
slowpoke 12
slowbro 13
magnemite 14
magneton 14
farfetchd 14
doduo 9
dodrio 15
seel 11
dewgong 7
grimer 9
muk 8
shellder 9
cloyster 9
gastly 8
haunter 10
gengar 10
onix 6
drowzee 9
hypno 9
krabby 10
kingler 10
voltorb 9
electrode 10
exeggcute 9
exeggutor 14
cubone 13
marowak 14
hitmonlee 12
hitmonchan 13
lickitung 9
koffing 12
weezing 13
rhyhorn 8
rhydon 11
chansey 9
tangela 9
kangaskhan 14
horsea 10
seadra 10
goldeen 11
seaking 12
staryu 12
starmie 12
mr_mime 12
scyther 12
jynx 15
electabuzz 10
magmar 12
pinsir 9
tauros 13
magikarp 13
gyarados 15
lapras 15
ditto 6
eevee 9
vaporeon 15
jolteon 11
flareon 10
porygon 11
omanyte 12
omastar 12
kabuto 11
kabutops 9
aerodactyl 7
snorlax 14
articuno 12
zapdos 10
moltres 14
dratini 9
dragonair 12
dragonite 13
mewtwo 9
mew 6
chikorita 11
bayleef 14
meganium 14
cyndaquil 13
quilava 14
typhlosion 14
totodile 11
croconaw 13
feraligatr 14
sentret 12
furret 11
hoothoot 13
noctowl 13
ledyba 12
ledian 14
spinarak 14
ariados 14
crobat 9
chinchou 13
lanturn 14
pichu 11
cleffa 11
igglybuff 9
togepi 12
togetic 11
natu 14
xatu 15
mareep 14
flaaffy 13
ampharos 12
bellossom 13
marill 10
azumarill 10
sudowoodo 11
politoed 14
hoppip 10
skiploom 11
jumpluff 13
aipom 12
sunkern 13
sunflora 12
yanma 11
wooper 9
quagsire 9
espeon 9
umbreon 10
murkrow 12
slowking 13
misdreavus 13
unown 5
wobbuffet 8
girafarig 13
pineco 5
forretress 10
dunsparce 13
gligar 12
steelix 7
snubbull 12
granbull 11
qwilfish 12
scizor 11
shuckle 12
heracross 11
sneasel 14
teddiursa 12
ursaring 13
slugma 9
magcargo 12
swinub 9
piloswine 12
corsola 9
remoraid 9
octillery 12
delibird 13
mantine 13
skarmory 12
houndour 11
houndoom 12