• Aucun résultat trouvé

Tabledesmati`eres ————— tdr18—————(Nepas)utiliserdescouleurs

N/A
N/A
Protected

Academic year: 2021

Partager "Tabledesmati`eres ————— tdr18—————(Nepas)utiliserdescouleurs"

Copied!
24
0
0

Texte intégral

(1)

—————

(Ne pas) utiliser des couleurs

J.R. Lobry

—————

L’utilisation de la couleur n’est pas un probl`eme simple. Ce que voient les personnes atteintes de d´eficiences oculaires. Comment peut-on fausser un message ? Les niveaux de gris. Superpositipeut-ons des cou-leurs transparentes.

Table des mati`

eres

1 Introduction 2

2 Dyschromatopsies 6

3 Niveaux de gris 11

4 Les couleurs 14

5 Couleurs transparentes 20

6 Couleurs d´efinies a priori 22

(2)

1

Introduction

Il est indispensable ici de citer Jacques Bertin [1] :

On fait `a l’auteur la r´eputation d’ˆetre contre la couleur. Je suis contre la couleur qui camoufle l’incomp´etence et je reste contre tant que l’on croira qu’elle suffit pour repr´esenter un ordre, qu’elle per-met de superposer des caract`eres jusqu’`a la limite de l’absurde, tant qu’elle coˆutera inutilement des fortunes aux deniers publics dans une confusion entre connaissance et publicit´e, tant que, par son truche-ment, les responsables et la t´el´evision diffuseront des images fausses et illisibles.

Reprenons l’exemple donn´e page 220 dans [1], l’information est la suivante :

bertin <- read.table("http://pbil.univ-lyon1.fr/R/donnees/bertin.txt", sep = "\t")

library(ade4) data(elec88)

area.plot(elec88$area[1:1845, ], clab = 0.75, lab = bertin[, 2])

1 12 4 −4 −4 −6 3 −2 −7 10 9 4 15 −12 3 −3 0 12 0 10 8 5 −3 −12 2 10 −11 11 8 −14 −4 −3 12 12 8 −7 −1 −5 −3 3 4 1 13 16 −3 −1 0 −12 −5 −6 −8 −6 −9 −2 9 −14 13 5 14 −8 11 4 −8 −11 14 −15 −4 3 −7 6 −14 −2 −3 18 −11 9 18 −5 1 6 0 −10 11 7 −6 1 −8 7 −4

La structuration selon un axe nord-sud est ´evidente sur la repr´esentation suivante :

s.value(elec88$xy[1:89, ], bertin[1:89, 2], contour = elec88$contour, meth = "squaresize", incl = F)

(3)

d = 100

−15 −5 5 15

Essayons maintenant de colorier sauvagement cette carte :

grey.bck <- grey

gray <- grey <- function(level) {

pal <- rev(c("black", "turquoise4", "greenyellow", "yellow", "orange", "orangered3", "maroon4"))

pal[round(1 + 6 * level)] }

area.plot(elec88$area, val = c(bertin[, 2], rep(18, 5)), clab = 0, sub = "", csub = 3)

grey <- gray <- grey.bck

(4)

On obtient une structuration selon un axe est-ouest, et il est impossible d’abstraire cette orientation. La perception des valeurs domine la perception des teintes. Les extr´emit´es du spectre sont fonc´ees alors que les couleurs cen-trales sont claires, nous avons tendance `a assimiler les deux extr´emit´es dans une mˆeme unit´e perceptive. `A ´egalit´e de valeur, les couleurs ne sont pas vi-suellement ordonn´ees, elles ne peuvent donc pas repr´esenter une information ordonn´ee. Voici la palette des couleurs disponibles de mˆeme valeur que les cou-leurs fondamentales satur´ees :

0 1 Rouge 1 0 Vert 1 0 Bleu

Voici la palette des couleurs disponibles de mˆeme valeur que les couleurs fondamentales `a 50 % de saturation, on assombrit globalement tout :

(5)

0 1 Rouge 1 0 Vert 1 0 Bleu

Voici la palette des couleurs disponibles de mˆeme valeur que les couleurs primaires `a 100 % de saturation, les couleurs fondamentales ne sont alors plus disponibles : 0 1 Rouge 1 0 Vert 1 0 Bleu

Le probl`eme de l’utilisation des couleurs est r´esum´e dans le graphique sui-vant. Les couleurs pures n’ont pas toutes la mˆeme valeur : pour toute couleur pure il existe au moins deux autre couleurs pures que nous percevrons semblables avant de voir les diff´erences.

n <- 201

(6)

main = "Valeurs des couleurs du spectre sature", xlab = "", ylab = "Valeur")

rb <- rev(rainbow(n, end = 5/6)) y <- numeric(n - 1)

for (i in seq(0, 1, length = n)[-n]) { ix <- n * i + 1

col <- rb[ix]

val <- sum(col2rgb(col))/255

rect(i, 0.5, i + 1/n, 1, col = grey(val/2), border = grey(val/2)) rect(i, 0, i + 1/n, 0.5, col = col, border = col)

y[ix] <- val } lines(seq(0, 1, length = n - 1), y) 0.0 0.2 0.4 0.6 0.8 1.0 0.0 0.5 1.0 1.5 2.0

Valeurs des couleurs du spectre sature

V

aleur

Le probl`eme est que les couleurs pures sont les plus s´electives, ce sont celles que l’on aimerait bien utiliser pour faire ”joli”. Mais vouloir utiliser les spectre des couleurs pures pour repr´esenter une variable ordonn´ee est une grave erreur car elle impose un ordre compl`etement artificiel, d´etruisant la perception de l’ordre naturel de la variable. Cela peut coˆuter tr`es cher que de vouloir faire ”joli”. ˆEtes-vous bien certain de toujours vouloir utiliser des couleurs ?

2

Dyschromatopsies

L’utilisation de couleurs dans des documents destin´es `a ˆetre diffus´es est assez d´elicate. Une forte proportion (de l’ordre de 5 %) des individus a des probl`emes plus ou moins importants pour distinguer certaines couleurs.

Exercice : un scientifique envoie un article avec des figures en couleur `a un journal pour publication. Cet article va ˆetre ´evalu´e par trois experts. Quelle est la probabilit´e pour qu’au moins un expert ait des probl`emes pour lire les figures en couleur ?

[1] 0.142625

Exercice : les g`enes codants pour les pigments rouges et verts ´etant `a localisa-tion h´etrochromosomique, les dyschromatopsies h´er´editaires ne concernent,

(7)

en premi`ere approximation, que les mˆales. Sachant que la sexe-ratio des experts est de 0.9, quelle est la probabilit´e pour qu’au moins un expert ait des probl`emes pour lire les figures en couleur ?

[1] 0.246429

Exercice : un enseignant donne un cours dans un amphi de 180 ´etudiants avec des transparents en couleur. Quelle est la probabilit´e pour qu’au moins un ´etudiant ait des probl`emes pour lire les transparents en couleur.

[1] 0.9999022

Exercice : repr´esentez graphiquement la probabilit´e d’avoir au moins une per-sonne ayant des probl`emes pour voir les couleurs en fonction de la taille de l’auditoire. 0 20 40 60 80 100 0.2 0.4 0.6 0.8 1.0 Un probleme frequent Taille de l'auditoire Probabilite

La biblioth`eque dichromat vous permet de tester si votre choix de couleurs est acceptable. Elle est bas´ee sur les travaux de Fran¸coise Vi´enot et collabora-teurs [2]. Ces travaux cherchent `a aider les concepteurs de documents `a large diffusion en leur permettant de v´erifier qu’ils sont toujours intelligibles pour les protanopes et deut´eranopes. L’id´ee est simplement de simuler ce que voient ces personnes. L’exemple ci-dessous est tir´e de [2], il montre que la carte des trans-ports en commun dans la r´egion ˆIle-de-France est toujours intelligible pour les protanopes (`a droite) :

(8)

La biblioth`eque dichromat vous permet tr`es simplement d’atteindre le mˆeme niveau de professionnalisme. Commencez par faire un graphique en couleur, par exemple :

n <- 20

x <- rep(1:n, n) y <- rep(1:n, each = n) couleur <- c("green3", "red")

plot(x, y, col = couleur, pch = 19, main = "Un dessin en rouge et vert", xaxt = "n", yaxt = "n", xlab = "", ylab = "")

● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●

Un dessin en rouge et vert

Les formes les plus communes de d´eficience dans la perception des couleurs sont les dyschromatopsies h´er´editaires de type protan et deutan correspondant a une difficult´e `a distinguer le rouge du vert :

library(dichromat)

plot(x, y, col = dichromat(couleur, "deutan"), pch = 19, main = "Un dessin en rouge et vert \n vu par les deuteranope", xaxt = "n", yaxt = "n", xlab = "", ylab = "")

(9)

● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●

Un dessin en rouge et vert vu par les deuteranope

plot(x, y, col = dichromat(couleur, "protan"), pch = 19, main = "Un dessin en rouge et vert \n Vu par les protanopes", xaxt = "n", yaxt = "n", xlab = "", ylab = "")

● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●

Un dessin en rouge et vert Vu par les protanopes

L’utilisation des couleurs est donc extrˆemement d´elicate car elle risque de fausser la perception du message pour une proportion non n´egligeable des indi-vidus. Pour bien s’en convaincre il suffit de consid´erer la version coloris´ee de la c´el`ebre lettre dite de George Sand `a Alfred de Musset1 :

1George Sand n’a jamais ´ecrit de textes ´erotiques, ceux qui sont publi´es sur internet sont des faux fabriqu´es au XIXesi`ecle (http://www.george-sand.info/).

(10)

original Je suis émue de vous dire que j'ai bien compris l'autre soir que vous aviez toujours une envie folle de me faire danser. Je garde le souvenir de votre baiser et je voudrais bien que ce soit là une preuve que je puisse être aimée par vous. Je suis prête à vous montrer mon affection toute désintéressée et sans cal− cul, et si vous voulez me voir aussi vous dévoiler sans artifice mon âme toute nue, daignez me faire une visite. Nous causerons en amis, franchement. Je vous prouverai que je suis la femme sincère et capable de vous offrir l'affection la plus profonde comme la plus étroite en amitié, en un mot, la meilleure épouse que vous puissiez rêver puisque votre âme est libre. Pensez que la solitude où j'ha− bite est bien longue, bien dure et souvent difficile. Ainsi en y songeant j'ai l'âme grosse. Accourrez donc vite et venez me la faire oublier. A l'amour que je veux vous sou− mettre.

vu par deuteranope

0

Je suis émue de vous dire que j'ai

bien compris l'autre soir que vous aviez

toujours une envie folle de me faire

danser. Je garde le souvenir de votre

baiser et je voudrais bien que ce soit

là une preuve que je puisse être aimée

par vous. Je suis prête à vous montrer mon

affection toute désintéressée et sans cal−

cul, et si vous voulez me voir aussi

vous dévoiler sans artifice mon âme

toute nue, daignez me faire une visite.

Nous causerons en amis, franchement.

Je vous prouverai que je suis la femme

sincère et capable de vous offrir l'affection

la plus profonde comme la plus étroite

en amitié, en un mot, la meilleure épouse

que vous puissiez rêver puisque votre

âme est libre. Pensez que la solitude où j'ha−

bite est bien longue, bien dure et souvent

difficile. Ainsi en y songeant j'ai l'âme

grosse. Accourrez donc vite et venez me la

faire oublier. A l'amour que je veux vous sou−

mettre.

C’est un probl`eme tr`es s´erieux, si nous reprenons l’exemple de la carte de Bertin :

grey.bck <- grey

gray <- grey <- function(level) {

pal <- rev(dichromat(c("black", "turquoise4", "greenyellow", "yellow", "orange", "orangered3", "maroon4"), type = "protan")) pal[round(1 + 6 * level)]

}

area.plot(elec88$area, val = c(bertin[, 2], rep(18, 5)), clab = 0, sub = "", csub = 3)

grey <- gray <- grey.bck

(11)

0.0 0.2 0.4 0.6 0.8 1.0 0.00 0.02 0.04 0.06 0.08 0.10 0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99

Fig. 1 – Nuancier des gris avec grey() ou gray().

Nous voyons qu’un protanope verra tr`es clairement une structure compl` ete-ment orthogonale `a la v´eritable structure des donn´ees. ˆEtes-vous bien certain de toujours vouloir utiliser des couleurs ?

3

Niveaux de gris

La fonction grey(), que l’on peut ´egalement orthographier `a l’am´ericaine gray(), permet de g´en´erer tr`es facilement toutes les nuances de gris entre le noir (cod´e 0) et le blanc (cod´e 1). Un nuancier est donn´e dans la figure 1. Les probl`emes de vision des couleurs ne se posent plus avec des niveaux de gris, mais notre perception des gris n’est pas tr`es bonne dans l’absolu parce que trop d´ependante du contexte. Le code ci-dessous montre bien que les deux rectangles gris sont exactement du mˆeme gris, pourtant celui qui est sur un fond clair semble ˆetre plus sombre :

plot(0, 0, type = "n", xlim = c(0, 2), ylim = 0:1, axes = FALSE, xlab = "", ylab = "", main = "Deux gris identiques...") rect(0, 0, 1, 1, col = grey(0))

rect(1, 0, 2, 1, col = grey(1))

rect(0.45, 0.1, 0.55, 0.9, col = grey(0.75), border = grey(0.75)) rect(1.45, 0.1, 1.55, 0.9, col = grey(0.75), border = grey(0.75))

(12)

Deux gris identiques...

De mˆeme, si nous n’avions pas sous les yeux le code R ayant g´en´er´e la figure suivante, il nous serait difficile de croire que le rectangle central est du mˆeme gris :

plot(0, 0, type = "n", xlim = 0:1, ylim = 0:1, axes = FALSE, xlab = "", ylab = "", main = "Un seul gris...")

n <- 200

for (i in seq(0, 1, length = n)) rect(i, 0, i + 1/n, 1, col = grey(i), border = grey(i))

rect(0.01, 0.45, 0.99, 0.55, col = grey(0.5), border = grey(0.5))

(13)

Reprendre l’exemple de Bertin pour comparer avec une repr´esentation en niveaux de gris :

opar <- par(no.readonly = TRUE) par(mfrow = c(1, 2))

s.value(elec88$xy[1:89, ], bertin[1:89, 2], contour = elec88$contour, meth = "squaresize", incl = F)

s.value(elec88$xy[1:89, ], bertin[1:89, 2], contour = elec88$contour, meth = "greylevel", incl = F)

par(opar)

d = 100

−15 −5 5 15

d = 100

−10] −5] 0] 5] 10] 15]

On peut utiliser des couleurs de valeur variable, mais quel est l’int´erˆet par rapport `a un simple niveau de gris ?

opar <- par(no.readonly = TRUE) par(mfrow = c(1, 2))

grey.bck <- grey

gray <- grey <- function(level) hsv(1, 1, level)

s.value(elec88$xy[1:89, ], bertin[1:89, 2], contour = elec88$contour, meth = "squaresize", incl = F)

s.value(elec88$xy[1:89, ], bertin[1:89, 2], contour = elec88$contour, meth = "greylevel", incl = F)

grey <- gray <- grey.bck par(opar)

d = 100

−15 −5 5 15

d = 100

(14)

Exercice : d´efinir une fonction pour faire le dessin ci-apr`es. Vous aurez be-soin des fonctions grey(), hist(), density(), lines(), rug(), jitter() et d’utiliser l’argument point-point-point.

x <- c(rnorm(100), rnorm(100, 3)) mon.hist(x, adjust = 0.5) Histogram of x x Density −4 −2 0 2 4 6 0.00 0.05 0.10 0.15 0.20

4

Les couleurs

Il y a 657 couleurs pr´ed´efinies dans R. Leur liste est donn´ee par la fonction colors() :

colors()[1:10]

[1] "white" "aliceblue" "antiquewhite" "antiquewhite1" "antiquewhite2" [6] "antiquewhite3" "antiquewhite4" "aquamarine" "aquamarine1" "aquamarine2"

Pour choisir une couleur rapidement, les repr´esenter dans une grille (figure 2) :

couleurs <- colors()

couleurs <- couleurs[-(grep("gray", couleurs))] couleurs <- couleurs[-(grep("grey", couleurs))] length(couleurs)

[1] 433

n <- ceiling(sqrt(length(couleurs))) w <- matrix(0, n, n)

opar <- par(no.readonly = TRUE) par(mar = c(0.1, 0.1, 0.1, 0.1))

plot(c(1, n + 1), c(1, n + 1), type = "n")

rect(col(w), row(w), col(w) + 1, row(w) + 1, col = couleurs) editcolor <- function() { w <- as.numeric(locator(1)) w <- floor(w) num <- (w[1] - 1) * n + w[2] return(couleurs[num]) } par(opar)

(15)

Fig. 2 – Grille des couleurs accessibles par leur nom. Utiliser editcolor pour avoir le nom en cliquant dans un carr´e

(16)

La fonction col2rgb() permet de r´ecup´erer le code RGB (Red Green Bleu) des couleurs :

library(scatterplot3d)

cubedraw <- function(res3d, min = 0, max = 255, cex = 2, text. = FALSE) { cube01 <- rbind(c(0, 0, 1), 0, c(1, 0, 0), c(1, 1, 0), 1, c(0,

1, 1), c(1, 0, 1), c(0, 1, 0)) cub <- min + (max - min) * cube01

res3d$points3d(cub[c(1:6, 1, 7, 3, 7, 5), ], cex = cex, type = "b", lty = 1)

res3d$points3d(cub[c(2, 8, 4, 8, 6), ], cex = cex, type = "b", lty = 3)

if (text.)

text(res3d$xyz.convert(cub), labels = 1:nrow(cub), col = "tomato", cex = 2)

}

cc <- colors()

crgb <- t(col2rgb(cc)) par(xpd = TRUE)

rr <- scatterplot3d(crgb, color = cc, box = FALSE, angle = 24, main = "Les couleurs pre-definies dans l'espace RVB", xlab = "rouge", ylab = "vert", zlab = "bleu", xlim = c(-50,

300), ylim = c(-50, 300), zlim = c(-50, 300)) cubedraw(rr)

Les couleurs pre−definies dans l'espace RVB

−50 0 50 100 150 200 250 300 −50 0 50 100 150 200 250 300 −50 0 50100 150200 250300 rouge v er t b leu ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●

La fonction rgb2hsv() permet de passer `a la repr´esentation HSV (teinte, saturation, valeur) des couleurs :

chsv <- t(rgb2hsv(col2rgb(cc)))

rr <- scatterplot3d(chsv, color = cc, box = FALSE, angle = 24, main = "Les couleurs pre-definies dans l'espace HSV", xlab = "Teinte (Hue)", ylab = "Saturation", zlab = "Valeur",

xlim = c(-0.1, 1.1), ylim = c(-0.1, 1.1), zlim = c(-0.1, 1.1)) cubedraw(rr, min = 0, max = 1)

(17)

Les couleurs pre−definies dans l'espace HSV −0.2 0.0 0.2 0.4 0.6 0.8 1.0 1.2 1.4−0.2 0.0 0.2 0.4 0.6 0.8 1.0 1.2 1.4 −0.2 0.0 0.2 0.4 0.6 0.8 1.0 1.2 Teinte (Hue) Satur ation V aleur ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ●● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●

Il existe plusieurs fonctions utilitaires permettant de choisir n couleurs dans une palette pr´e-d´efinie :

demo.pal <- function(n, border = if (n < 32) "light gray" else NA, main = paste("Palettes de couleur; n=", n), ch.col = c("rainbow(n)",

"heat.colors(n)", "terrain.colors(n)", "topo.colors(n)", "cm.colors(n)")) { nt <- length(ch.col) i <- 1:n j <- n/nt d <- j/6 dy <- 2 * d

plot(i, i + d, type = "n", yaxt = "n", ylab = "", main = main) for (k in 1:nt) {

rect(i - 0.5, (k - 1) * j + dy, i + 0.4, k * j, col = eval(parse(text = ch.col[k])), border = eval(parse(text = ch.col[k])))

text(2 * j, k * j + dy/4, ch.col[k]) }

}

(18)

0 20 40 60 80 100 120 Palettes de couleur; n= 128 i rainbow(n) heat.colors(n) terrain.colors(n) topo.colors(n) cm.colors(n)

Exercice : ´ecrire une fonction pour repr´esenter la trajectoire des palettes pr´ed´efinies dans les espaces RGB et HSV.

show.palette(rainbow)

rainbow dans l'espace RVB

−50 0 50 100 150 200 250 300 −50 0 50 100 150 200 250 300 −50 0 50100 150200 250300 rouge v er t b leu ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●

rainbow dans l'espace HSV

−0.2 0.0 0.2 0.4 0.6 0.8 1.0 1.2 1.4−0.2 0.0 0.2 0.4 0.6 0.8 1.0 1.2 1.4 −0.2 0.0 0.2 0.4 0.6 0.8 1.0 1.2 Teinte (Hue) Satur ation V aleur ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● show.palette(heat.colors)

(19)

heat.colors dans l'espace RVB −50 0 50 100 150 200 250 300 −50 0 50 100 150 200 250 300 −50 0 50100 150200 250300 rouge v er t b leu ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● ● ● ● ● ● ● ● ●

heat.colors dans l'espace HSV

−0.2 0.0 0.2 0.4 0.6 0.8 1.0 1.2 1.4−0.2 0.0 0.2 0.4 0.6 0.8 1.0 1.2 1.4 −0.2 0.0 0.2 0.4 0.6 0.8 1.0 1.2 Teinte (Hue) Satur ation V aleur ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●●●●●●●●●●●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● show.palette(terrain.colors)

terrain.colors dans l'espace RVB

−50 0 50 100 150 200 250 300 −50 0 50 100 150 200 250 300 −50 0 50100 150200 250300 rouge v er t b leu ● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

terrain.colors dans l'espace HSV

−0.2 0.0 0.2 0.4 0.6 0.8 1.0 1.2 1.4−0.2 0.0 0.2 0.4 0.6 0.8 1.0 1.2 1.4 −0.2 0.0 0.2 0.4 0.6 0.8 1.0 1.2 Teinte (Hue) Satur ation V aleur ● ● ● ● ● ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● show.palette(topo.colors)

topo.colors dans l'espace RVB

−50 0 50 100 150 200 250 300 −50 0 50 100 150 200 250 300 −50 0 50100 150200 250300 rouge v er t b leu ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●●●●●●●●●●●●●●●●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

topo.colors dans l'espace HSV

−0.2 0.0 0.2 0.4 0.6 0.8 1.0 1.2 1.4−0.2 0.0 0.2 0.4 0.6 0.8 1.0 1.2 1.4 −0.2 0.0 0.2 0.4 0.6 0.8 1.0 1.2 Teinte (Hue) Satur ation V aleur ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●

(20)

show.palette(cm.colors)

cm.colors dans l'espace RVB

−50 0 50 100 150 200 250 300 −50 0 50 100 150 200 250 300 −50 0 50100 150200 250300 rouge v er t b leu ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

cm.colors dans l'espace HSV

−0.2 0.0 0.2 0.4 0.6 0.8 1.0 1.2 1.4−0.2 0.0 0.2 0.4 0.6 0.8 1.0 1.2 1.4 −0.2 0.0 0.2 0.4 0.6 0.8 1.0 1.2 Teinte (Hue) Satur ation V aleur ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

5

Couleurs transparentes

Les couleurs transparentes ne sont pas toujours disponibles (seuls quartz() et pdf()).

pdf("figs/essai.pdf", version = "1.4") set.seed(1071966)

n <- 10

x <- rnorm(n = n, mean = 5)

plot(x = x, y = x, main = "La variance est le carre moyen", col.main = "red", las = 1, pch = 3, xlab = expression(x[i]), ylab = expression(y[i])) points(mean(x), mean(x), cex = 3)

sapply(1:4, function(side) rug(x = x, side = side))

rect(xleft = x, ybottom = x, xright = mean(x), ytop = mean(x), col = rgb(0, 0, 0, 2/n), border = rgb(0, 0, 0, 2/n))

var.n <- function(x) sum((x - mean(x))^2)/length(x) offset <- diff(range(x))/50

xleft <- offset + mean(x) xright <- xleft + var.n(x) ybottom <- offset + min(x) ytop <- ybottom + var.n(x)

rect(xleft, ybottom, xright, ytop, lwd = 2, border = "red") text((xleft + xright)/2, (ytop + ybottom)/2, expression(frac(1,

n) * sum((x[i] - bar(x))^2)))

legend(x = min(x), y = max(x), expression(bar(x) == frac(1, n) * sum(x[i])), pt.cex = 3, pch = 1, bty = "n")

(21)

3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5

La variance est le carre moyen

xi yi

1 n∑(xi−x) 2

x=1 n∑xi

Les couleurs transparentes peuvent ˆetre int´eressantes pour visualiser les su-perpositions de points :

pdf("figs/ronds.pdf", version = "1.4") n <- 20

plot(runif(n), runif(n), pch = 19, col = c(rgb(1, 1, 0, 0.2), rgb(0, 1, 1, 0.2), rgb(1, 0, 1, 0.2)), cex = 15) dev.off() 0.2 0.4 0.6 0.8 1.0 0.2 0.4 0.6 0.8 1.0 runif(n) runif(n)

Les couleurs transparentes peuvent ˆetre int´eressantes dans certains cas tr`es particuliers, comme la repr´esentation de plans dans des vues en perspective :

(22)

−0.5 0.0 0.5 1.0 1.5 2.0 2.5 3.0 −0.5 0.0 0.5 1.0 1.5 2.0 X[,1] X[,2] 000 001 002 010 011 012 020 021 022 100 101 102 110 111 112 120 121 122 200 201 202 210 211 212 220 221 222

6

Couleurs d´

efinies a priori

Pour un domaine d’application bien d´efini, il peut exister un code des cou-leurs standard, par exemple en g´eologie (cf figure 3), ou pour les cartes topo-graphiques :

data(volcano)

x <- 10 * (1:nrow(volcano)) y <- 10 * (1:ncol(volcano))

image(x, y, volcano, col = terrain.colors(100), axes = FALSE) contour(x, y, volcano, levels = seq(90, 200, by = 5), add = TRUE,

col = "peru")

axis(1, at = seq(100, 800, by = 100)) axis(2, at = seq(100, 600, by = 100)) box()

(23)

−5 −4 −3 −2 −1 0

Geologic Linear Time Scale in 10

9

years

Age

ICS 2004 data with USGS color code

Cryogenian Tonian Stenian Ectasian Calymmian Statherian Orosirian Rhyacian Siderian Mesozoic Paleozoic Neo− proterozoic Meso− proterozoic Paleo− proterozoic Neoarchean Mesoarchean Paleoarchean Eoarchean Phanerozoic Proterozoic Archean

Eon Era Period

O

2

Present Accretion of Earth Macro− fossils Last Sterilizing Impact

Fig. 3 – Les couleurs des cartes g´eologiques sont d´efinies dans des standards internationaux (il existe en fait deux standards en comp´etition)

x y 95 100 100 100 105 105 105 110 110 110 110 115 115 115 120 125 130 135 140 145 150 155 155 160 160 165 165 170 170 175 180 180 185 190 100 200 300 400 500 600 700 800 100 200 300 400 500 600

(24)

ef´

erences

[1] J. Bertin. La graphique et le traitement graphique de l’information. Flam-marion, Paris, 1973.

[2] F. Vi´enot, H. Brettel, and J.D. Mollon. Digital video colourmaps for checking the legibility of displays by dichromats. Color Research and Application, 24 :243–252, 1999.

Figure

Fig. 1 – Nuancier des gris avec grey() ou gray().
Fig. 2 – Grille des couleurs accessibles par leur nom. Utiliser editcolor pour avoir le nom en cliquant dans un carr´ e
Fig. 3 – Les couleurs des cartes g´ eologiques sont d´ efinies dans des standards internationaux (il existe en fait deux standards en comp´ etition)

Références

Documents relatifs

Les autres obstacles identifiés par les répondants de cette étude, énumérés en ordre, sont : (3) la domination du modèle médical, (4) la difficulté de

Plus précisément la discussion portera sur le taux de participation, le nombre de rapports rédigés en stage, la clientèle principale rencontrée en stage, les modèles

Puisque nous avons pris conscience qu’il existe chez les élèves, dans les écoles québécoises, une lacune à combler en ce qui a trait à l’éducation au pluralisme et

Les participants ont dû identifier le plus rapidement et le plus justement possiblement l'émotion présentée durant l'enregistrement de l'électroencéphalogramme (EEG). En

Dans l’exercice pr´ ec´ edent, nous avons obtenu la temp´ erature microcanonique pour les spins nucl´ eaires d’un cristal, que nous noterons T mag ∗ (E) (elle est associ´ ee `

Dans l’exercice pr´ ec´ edent, nous avons obtenu la temp´ erature microcanonique pour les spins nucl´ eaires d’un cristal, que nous noterons T mag ∗ (E) (elle est associ´ ee `

Dans tout ce chapitre, les fonctions ´ etudi´ ees sont d´ efinies sur un intervalle inclus dans R d’int´ erieur non vide (c’est-` a-dire contenant au moins deux ´ el´

Ici, on choisit pour univers Ω l’ensemble des quadruplets de cartes, muni de la proba- bilit´e uniforme.. On se donne deux urnes. La premi`ere contient deux balles rouges et