Sélectionner une page

Souvent, quand on fait un graphique, on ne réfléchit pas beaucoup à qui va le regarder. On a nos données, on produit une visualisation qui nous est utile, et on s’en contente.

Or, ma maigre expérience des réseaux sociaux m’a appris qu’une bonne partie de la population souffre de problèmes de vue variés, y compris de daltonisme. Et très concrètement, pour un daltonien, il peut être très difficile de distinguer les couleurs de votre graphique et d’en comprendre le message.

Donc, j’ai dû réfléchir à comment faire des graphiques plus inclusifs. Je vais vous illustrer ceci avec des graphs que j’ai produits sur twitter, et pour lesquels on m’a fait des remarques constructives.

Pour le contexte, j’ai fait un petit bot twitter qui me poste tous les soirs des graphiques pour suivre l’épidémie de Covid-19. Et j’ai un graph produit qui me montre la répartition des contaminations par tranche d’âge :

Cette figure a été retweetée avec le commentaire suivant : 

Bon, manifestement c’est pas simple pour les daltoniens. Et manifestement quand on regarde la figure, c’est pas non plus facile pour les gens qui perçoivent toutes les couleurs. Comment régler ce problème ?

Nombre de couleurs

Dans un premier temps, il faut réfléchir à la pertinence de sa visualisation, pour réduire le nombre de catégories à colorier. Concrètement, si vous avez plus de 5 couleurs différentes dans un graphique, vous allez forcément avoir des couleurs proches, pas facilement distinguables. La première chose est donc d’essayer de limiter le nombre de couleurs.  

dans mon cas, je ne pouvais pas changer le nombre de couleurs. Bon. Tant pis. Il fallait donc travailler sur la palette, et les contrastes.

Choix des couleurs

Il fallait choisir une palette de couleur qui est adaptée aux daltoniens. Si vous utilisez ggplot, la palette viridis est parfaitement adaptée à cet usage. Si vous utilisez graphics par exemple, vous pouvez afficher les palettes adaptées avec la commande 

RColorBrewer::display.brewer.all(colorblindFriendly = TRUE)

R vous affichera alors un magnifique graph avec les différentes palettes possibles : 

Sous ggplot, choisir la palette viridis est très simple : 

  • scale_fill_viridis_x si le paramètre de votre aes() est fill  = votreFacteur.
  • scale_col_viridis_x si le paramètre de votre aes() est coll = votreFacteur.

Il existe 3 version de scale_fill_viridis_x:

  1. scale_fill_viridis_c si la variable est continue (par exemple une température)
  2. scale_fill_viridis_d si la variable est discrète (par exemple une catégorie)
  3. scale_fill_viridis_b si vous voulez catéoriser une variable continue (par exemple convertir des tailles en tranches de tailles)

J’ai donc modifié mon graph initial avec seulement 2 choses :

  1. j’ai ajouté en option de mon geom col = “black” pour dessiner les cadres autour de mes couleurs et améliorer le contraste
  2. J’ai utilisé scale_fill_viridis_d

Le résultat est beaucoup plus lisible 

On a toujours le problème d’un trop grand nombre de couleurs, mais les contrastes sont mieux gérés.

Typographie

La 3ème chose à laquelle il faut penser est la typographie et la disposition du graphique. Un utilisateur twitter m’a fait part tu thème ipsum du package hrbrthemes

Il suffit donc simplement de remplacer theme_bw() par theme_ipsum(). Rien de bien compliqué donc. 

Voilà le résultat : 

Si on compare le graphique d’origine et le graphique final, la lisibilité est grandement améliorée sur la figure finale. Et cela n’a demandé que de très légères modifications au script.

Conclusion

De mon côté, je vais je pense systématiser l’utilisation de la palette viridis et du theme ipsum. La communauté R est de plus en plus sensible à l’inclusivité et à la propreté des graphiques. Une conférence récente présente même le concept de “Glamour of graphics” en référence à “Grammar of graphics” dont ggplot est le digne représentant. Cette conf est visible ici : https://rstudio.com/resources/rstudioconf-2020/the-glamour-of-graphics/

Dans cette conférence, William Chase définit que les 3 composants à prendre en compte pour rendre votre graphique “glamour” et donc lui permettre d’atteindre une meilleure audience sont les couleurs, la typographie, et le layout (l’agencement).

L’excellente conférence de Miriah Meyer vous donnera plein de conseils pour réfléchir à vos visuels : https://rstudio.com/resources/rstudioconf-2020/effective-visualizations/

Le Script final ressemble à :

ggplot(data) +
geom_bar(aes(x = week_date, y = week_conta, fill = cl_age90),col = "black", stat = "identity", position = "fill") +
theme_ipsum() +
scale_y_continuous(labels = scales::percent) +
scale_fill_viridis_d() +
labs(fill = "Classe d'âge") +
xlab("Date") +
ylab("Pourcentage de contamination") +
labs(caption = "Source : Santé Publique France | lebiostatisticien.fr") +
ggtitle("Proportion des contaminations, par âge")

Pin It on Pinterest

Share This