«Meilleure» série de couleurs à utiliser pour différencier les séries dans des tracés de qualité édition

89

Est-ce qu'une étude a été faite sur les meilleurs jeux de couleurs à utiliser pour montrer plusieurs séries sur la même parcelle? Je viens d'utiliser les valeurs par défaut matplotlib, et elles ont l'air un peu enfantines puisqu'elles sont toutes lumineuses, couleurs primaires.

David Hollman
la source
28
Cela ne répond pas à votre question, mais je pense qu’il est important de le mentionner. Chaque fois que possible, toute palette de couleurs choisie doit être complétée par des symboles ou des styles de ligne différents, de sorte que, lorsque le tracé est imprimé en noir et blanc, il soit encore facile à comprendre. Bien trop souvent, les auteurs ne s’appuient que sur la couleur, rendant les figures inutilisables pour les daltoniens et ceux qui préfèrent lire la version imprimée en noir et blanc de votre document. Les placettes doivent toujours, si possible, travailler en noir et blanc et fonctionner "mieux" en couleur.
WetlabStudent
11
+1 à MHH. Un commentaire légendaire de la télévision sur le billard fait indirectement le même constat: "Steve vise le ballon rose - et pour ceux qui regardent en noir et blanc, le rose est à côté du vert." Explication pour les jeunes lecteurs: Cela vient du temps où certaines personnes pouvaient se permettre une télévision couleur alors que d’autres devaient choisir une télévision noir et blanc moins chère.
Nick Cox
5
"Best" dans quel but? Ce n'est pas une question triviale ou désinvolte. Pour impressionner les lecteurs d’un forum Internet, j’utilise des symboles graphiques qui fonctionnent sans couleur, puis je les décore avec des couleurs arc-en-ciel (qui ont peut-être un sens, mais qui servent avant tout à attirer l’attention et à donner une impression de «qualité»). Pour les tracés destinés à transmettre des données, un autre jeu de couleurs peut être choisi, tandis que pour les tracés créés de manière exploratoire afin de révéler des motifs éventuellement inattendus (dans une gestalt visuelle ), le jeu doit dépendre de l'objectif: différenciation, agrégation, sélection, etc. autre?
whuber
2
@ Whuber: Vous faites valoir un point. J'aurais dû préciser que je voulais être publié dans la littérature scientifique et, en général, je voulais demander des réponses à chacune des catégories d'agrégation, de sélection, de différenciation, etc. En effet, l'agrégation et la différenciation ne sont souvent pas des objectifs distincts: dans les figures l’un de mes papiers ( dx.doi.org/10.1063/1.4864755 ), j’avais besoin des deux (et je ne pense pas en avoir fait un très bon travail). (Désolé pour ceux d'entre vous pas sur les campus universitaires; je vais essayer de mettre en place un lien grand public bientôt)
David Hollman

Réponses:

53

Le travail de Cynthia Brewer sur ColorBrewer est une référence courante pour choisir une palette de couleurs . Les couleurs ont été choisies en fonction des modèles de perception dans les cartes choroplèthes, mais les mêmes conseils valent presque toujours pour l'utilisation de la couleur dans tout type de tracé pour distinguer les modèles de données. Si la couleur sert uniquement à distinguer les différentes lignes, une palette qualitative est appropriée.

Souvent, la couleur n’est pas nécessaire dans les tracés linéaires comportant seulement quelques lignes, et différents symboles ponctuels et / ou motifs en tirets sont suffisamment efficaces. Un problème plus commun avec les tracés linéaires est que si les lignes se chevauchent fréquemment, il sera difficile de distinguer différents motifs, quels que soient les symboles ou la couleur que vous utilisez. Stephen Kosslyn recommande une règle générale pour n'avoir que 4 lignes dans un tracé. Si vous en avez plus, envisagez de scinder les lignes en une série de petites parcelles multiples. Voici un exemple montrant la recommandation

Aucune couleur nécessaire et les étiquettes sont plus que suffisantes.

Andy W
la source
4
J'aime la palette "Dark2" de ColorBrewer!
Gimelist
5
Merci pour la recommandation de ColorBrewer! C'est le genre de chose que je cherchais.
David Hollman
L’image en niveaux de gris ne fonctionne pas s’il ya deux séries avec la même valeur soit au milieu quelque part (les deux séries ne peuvent pas être retracées au-delà de ce point), soit à la fin (les étiquettes ne pourront pas distinguer lesquelles). la série est qui). C'est génial quand cela fonctionne bien ...
naught101
D'accord @ naught101 pour le milieu (les extrémités coïncidentes, il suffit de mettre l'étiquette quelque part avant la fin). C'est une des raisons de ne pas utiliser d'interpolation linéaire entre les points, mais d'utiliser un type de spline. Dans ce cas, la spline se courbera dans différentes directions. Cela se produit assez souvent dans les tracés de coordonnées parallèles denses. (Le scintillement peut également aider avec des données avec de nombreux liens, comme des données à faible nombre d'entiers.)
Andy W
1
Vos avis sur data viz. Les livres sur Amazon sont incroyables. Merci pour ça.
Andy W
40

Beaucoup de conseils remarquablement bons dans d'autres réponses, mais voici quelques points supplémentaires tirés de mes propres conseils de bas niveau aux étudiants. Ce n’est qu’un conseil, bien sûr, sur lequel il convient de réfléchir compte tenu des questions clés: quel est le but de mon graphique? Qu'est-ce qui a du sens avec ces données? Qui sont les lecteurs? Qu'est-ce que je m'attends à ce que les couleurs fassent dans le graphique? Le graphique fonctionne-t-il bien, quels que soient les dogmes de quelqu'un d'autre?

De plus, l’importance de la couleur varie énormément d’un graphique à l’autre. Pour un choroplète ou un patch map, dans lequel l’idée est effectivement que différentes zones soient colorées ou au moins ombrées différemment, le succès d’un graphique est lié au succès de son schéma de couleurs. Pour d'autres types de graphiques, les couleurs peuvent être inutiles ou même gênantes.

  1. Vos couleurs sont-elles toutes nécessaires? Par exemple, si différents libellés ou groupes de variables sont clairement distingués par des libellés de texte situés dans différentes régions d’un graphique, des couleurs distinctes seraient également souvent excessives. Méfiez-vous des effets de salade de fruits ou de manteau technicolor. Pour un graphique à secteurs avec un libellé de texte sur ou par les tranches, la couleur ne transmet aucune information supplémentaire, par exemple. (Si votre graphique à secteurs dépend d'une clé ou d'une légende, vous essayez probablement le mauvais type de graphique.)

  2. Ne comptez jamais sur un contraste entre le rouge et le vert, tant de gens ont du mal à distinguer ces couleurs.

  3. Les séquences arc-en-ciel (ROYGBIV ou rouge-orange-jaune-vert-bleu-indigo-violet) peuvent faire appel à des motifs physiques, mais elles ne fonctionnent pas bien dans la pratique. Par exemple, le jaune est généralement une couleur faible, tandis que l'orange et le vert sont généralement plus forts, de sorte que l'impression n'est même pas d'une séquence monotone.

  4. Évitez toute palette de couleurs ayant pour conséquence de grandes taches de couleur vive.

  5. Une séquence allant du rouge foncé au bleu foncé fonctionne bien lorsqu'une séquence ordonnée est nécessaire. Si le blanc est (comme d'habitude) la couleur de fond n'importe où, ne l'utilisez pas, mais passez du rouge pâle au bleu pâle. [ajouté le 1er mars 2018] Peut-être trop évident pour être souligné: le rouge a des connotations négatives et / ou dangereuses pour beaucoup, ce qui peut être utile, et bleu peut alors signifier positif. Trop évident à souligner, mais je le fais quand même: le rouge et le bleu ont des connotations politiques dans de nombreux pays.

  6. Bleu et orange vont bien ensemble (un clin d'œil reconnaissant à Hastie, Tibshirani et Friedman ici: http://web.stanford.edu/~hastie/local.ftp/Springer/OLD/ESLII_print4.pdf ) [ajouté le 1 mars 2018] Beaucoup Les livres d'introduction à la visualisation recommandent désormais l'orange, le bleu et le gris comme palette de base: orange et / ou bleu pour ce que vous aimez et le gris pour l'arrière-plan.

  7. Les niveaux de gris, du gris pâle au gris foncé, peuvent être efficaces et sont une bonne idée lorsque la reproduction des couleurs est hors de question. (Il s'agit d'un imprimeur moche qui ne peut pas faire une impression juste en niveaux de gris.) (Gris si vous le souhaitez; les préférences changent selon les océans, semble-t-il; tout comme pour la couleur et la couleur.)

  8. [ajouté le 5 août 2016] Un principe assez général est que souvent deux couleurs fonctionnent beaucoup mieux que beaucoup. Si deux groupes sont intéressants, choisissez des couleurs également fortes (par exemple rouge ou orange et bleu). Si un groupe présente un intérêt particulier parmi plusieurs, définissez-le en bleu ou en orange et laissez les autres en gris. Utiliser sept couleurs pour sept groupes porte en principe l'information, mais il est difficile même de se concentrer sur une couleur à la fois lorsque plusieurs autres se font concurrence. De petits multiples peuvent être meilleurs pour plusieurs groupes qu'un tracé multicolore.

Nick Cox
la source
1
Très bon point sur les couleurs faibles et fortes
shadowtalker
2
Le point 2 est TRÈS important. Un de mes professeurs de statistiques était daltonien et utilisait avec bonheur "jaune clair" et "jaune clair" dans un tableau. La couleur était pratiquement identique à nous, mais pour lui, ils étaient faciles à distinguer.
Christian Sauer
1
Merci pour les conseils, en particulier # 2. J'ai regardé mes parcelles et me suis rendu compte que le rouge et le vert étaient les deux premières couleurs que Matplotlib choisit toujours. Ce n'est pas si génial.
David Hollman
Cela semble un défaut de dopey.
Nick Cox
27

En fait, il y a eu beaucoup de recherches à ce sujet ces dernières années.

Un gros point est la "résonance sémantique". Cela signifie fondamentalement "des couleurs qui correspondent à ce qu'elles représentent", par exemple une série chronologique pour l'argent devrait être colorée en vert, du moins pour un public américain. Cela améliore apparemment la compréhension. Un article très intéressant sur le sujet est celui de Lin, et al (2013): http://vis.stanford.edu/papers/semantically-resonant-colors

Il existe également le très agréable générateur de couleurs iWantHue, à l' adresse http://tools.medialab.sciences-po.fr/iwanthue/ , avec de nombreuses informations dans les autres onglets.

Références

Lin, Sharon, Julie Fortuna, Chinmay Kulkarni, Maureen Stone et Jeffrey Heer. (2013). Sélection de couleurs sémantiquement résonantes pour la visualisation de données. Forum d'infographie (Proc. EuroVis), 2013

shadowtalker
la source
13
+1 ... Cependant, certaines choses, comme votre exemple d' argent , ne sont pas universelles. L'argent peut être vert (-ish) aux États-Unis. Ce n’est pas partout le vert et l’association avec la couleur peut varier d’un pays à l’autre (par exemple, une personne en Allemagne est plus susceptible d’associer le bleu à l’argent, bien qu’à présent il soit disponible dans une grande variété de couleurs).
Glen_b
@Glen_b bon point
shadowtalker
1
+1 pour les citations qui répondent le mieux aux trois premiers mots de la question :-)
David Hollman
22

Paul Tol fournit sur son site Web un jeu de couleurs optimisé pour les différences de couleur (données catégoriques ou qualitatives) et les daltoniens , ainsi que dans une "note technique" (fichier PDF) qui y est associée. Il déclare:

Pour rendre les graphiques avec vos résultats scientifiques aussi clairs que possible, il est utile de disposer d'une palette de couleurs:

  • distinct pour toutes les personnes, y compris les lecteurs daltoniens;
  • distincte du noir et blanc;
  • distinct sur l'écran et le papier; et
  • toujours correspondre bien ensemble.

J'ai pris le jeu de couleurs de sa "Palette 1" des 9 couleurs les plus distinctes et je l'ai placé dans mon matplotlibrcdossier sous axes.color_cycle:

axes.color_cycle    : 332288, 88CCEE, 44AA99, 117733, 999933, DDCC77, CC6677, 882255, AA4499

Ensuite, en empruntant à Joe Kington, répondez aux lignes par défaut tracées par:

import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np

x = np.linspace(0, 20, 100)

fig, axes = plt.subplots(nrows=2)

for i in range(1,10):
    axes[0].plot(x, i * (x - 10)**2)

for i in range(1,10):
    axes[1].plot(x, i * np.cos(x))

plt.show()

résulte en:

entrez la description de l'image ici

Pour les cartes de couleurs divergentes (par exemple, pour représenter des valeurs scalaires), la meilleure référence que j'ai vue est l'article de Kenneth Moreland disponible ici " Cartes de couleurs divergentes pour la visualisation scientifique ". Il a développé le schéma froid-chaud pour remplacer le schéma arc-en-ciel et "présente un algorithme permettant aux utilisateurs de générer facilement leurs propres cartes de couleurs personnalisées".

Robert Simmon, l'homme qui a créé l'image "Blue Marble" pour la NASA, constitue une autre source d'informations utile sur l'utilisation de la couleur dans les visualisations scientifiques. Voir sa série de publications sur le site Web de l’Observatoire de la Terre.

un ben différent
la source
6
+1 à la seule (!) Réponse sur neuf qui affiche les couleurs en réponse à la question "Meilleures couleurs".
Amibe dit de réintégrer Monica
@ amoeba: ben plus maintenant :-)
Tung
20

Sur colorbrewer2.org, vous trouverez des palettes de couleurs qualitatives , séquentielles et divergentes . Qualitative maximise la différence entre les couleurs successives, et c'est ce que j'utilise dans gnuplot. La beauté du site réside dans le fait que vous pouvez facilement copier les codes hexadécimaux des couleurs afin qu’elles soient faciles à importer. Par exemple, j'utilise le jeu de 8 couleurs suivant:

#e41a1c
#377eb8
#4daf4a
#984ea3
#ff7f00
#ffff33
#a65628
#f781bf

C'est plutôt agréable et donne des résultats clairs.

En remarque, séquentiel est utilisé lorsque vous avez besoin d'un dégradé régulier et diver- gnant lorsque vous devez mettre en évidence des différences par rapport à une valeur centrale (par exemple, l'altitude de la montagne et la profondeur de la mer). Vous pouvez en savoir plus sur ces jeux de couleurs ici .

Joseph D'Arimathea
la source
1
Personnellement, je ne trouve pas que le jaune vif soit une couleur claire de l'intrigue
rhombidodecahedron
11

Il existe de nombreux sites Web dédiés au choix des palettes de couleurs. Je ne sais pas s'il existe un ensemble de couleurs particulier qui est objectivement le meilleur, vous devrez choisir en fonction de votre public et du ton de votre travail.

Consultez http://www.colourlovers.com/palettes ou http://design-seeds.com/index.php/search pour commencer. Certains d'entre eux ont des couleurs proches de deux groupes différents, mais d'autres vous donneront des couleurs complémentaires sur une plus large gamme.

Vous pouvez également consulter les jeux de couleurs prédéfinis non définis par défaut dans Matplotlib .

Jordan Bentley
la source
5

J'aime la palette Dark2 de colorbrewer pour les diagrammes de dispersion. Nous l'avons utilisé dans le livre de ggobi , www.ggobi.org/book . Mais sinon, les palettes de couleurs sont conçues pour des zones géographiques plutôt que pour des tracés de données. Le bon choix des couleurs reste un problème pour les tracés ponctuels.

Les packages R colorspaceet dichromatsont utiles. colorspacepermet la sélection des couleurs autour du volant: vous pouvez passer des heures / jours à des réglages précis. dichromataide à vérifier le daltonisme.

ggplot2 a généralement de bonnes valeurs par défaut, mais pas nécessairement une épreuve daltonienne.

Le schéma rouge à bleu divergent a l'air bien sur votre ordinateur mais ne se projette pas bien.

Dianne Cook
la source
3

Une autre possibilité serait de trouver un ensemble de couleurs a) équidistantes dans LAB, b) prendre en compte le daltonisme et c) pouvant s'intégrer dans la gamme de l'espace colorimétrique sRGB ainsi que dans les gammes des espaces CMJN les plus courants.

Je pense que la dernière exigence est une nécessité pour toute méthode de sélection des couleurs. Cela ne sert à rien si les couleurs ont bonne apparence à l'écran mais si elles sont confuses lorsqu'elles sont imprimées dans un processus CMJN. Et comme le PO spécifie la "qualité de publication", je suppose que les graphiques seront bien imprimés en CMJN.

JenSCDC
la source
3

Ceci est mon schéma préféré. Il a 20 (!!!!) couleurs distinctes, qui se distinguent toutes facilement. Cela échoue probablement pour les daltoniens, cependant.

#e6194b
#3cb44b
#ffe119
#0082c8
#f58231
#911eb4
#46f0f0
#f032e6
#d2f53c
#fabebe
#008080
#e6beff
#aa6e28
#fffac8
#800000
#aaffc3
#808000
#ffd8b1
#000080
#808080
#ffffff
#000000
énigmatique médecin
la source
2

Lorsque vous tracez des lignes, vous devez faire attention au vert et au jaune, qui ne s'affichent pas bien sur les projecteurs. Étant donné que je réutilise éventuellement la plupart de mes parcelles dans des présentations, j’évite ces couleurs même si l’intention initiale était de publier sur un écran ou sur papier.

Afin de maintenir un contraste élevé, cela me laisse du noir, du rouge, du bleu, du magenta, du cyan et, si j'en ai vraiment besoin, j'utilise du gris. En effet, la plupart sont des couleurs vives, primaires ou secondaires. Je sais que ce n'est peut-être pas optimal d'un point de vue esthétique, mais je m'intéresse davantage à la clarté de ce que je présente. D'autre part, réutiliser systématiquement les mêmes couleurs à partir d'une palette limitée peut être une bonne chose esthétiquement.

Si vous utilisez plus de 6 lignes, vous occupez plus d’espace et tracez des blocs de couleur. Pour ce type d’intrigue, je pense que chaque cas doit être examiné séparément. Voulez-vous que les extrêmes se démarquent, ou les passages à zéro? Est-ce que vos données sont cycliques (par exemple, 0 et 2π doivent utiliser la même couleur)? Existe-t-il une analogie avec des normes telles que bleu / rouge pour la température? Le blanc représente-t-il NaN, pas de données, ou sera-t-il utilisé comme point culminant? etc.

craq
la source
2

Pour les daltoniens, CARTOColors propose un schéma qualitatif adapté aux daltoniens, Safebasé sur les schémas de couleurs populaires de Paul Tol . Cette palette est composée de 12 couleurs faciles à distinguer.

Les schémas Okabe et Ito proposés dans leur article «Color Universal Design (CUD): comment créer des figures et des présentations conviviales pour les daltoniens» constituent une autre excellente palette qualitative pour les daltonistes.

### Example for R users
library(ggplot2)
library(rcartocolor)
library(patchwork)
theme_set(theme_classic(base_size = 14) + theme(panel.background = element_rect(fill = "#ecf0f1")))

set.seed(123)
df <- data.frame(x = rep(1:5, 8), 
                 value = sample(1:100, 40), 
                 variable = rep(paste0("category", 1:8), each = 5))

safe_pal <- carto_pal(12, "Safe")
palette_OkabeIto_black <- c("#E69F00", "#56B4E9", "#009E73", "#F0E442", 
                            "#0072B2", "#D55E00", "#CC79A7", "#000000")

# plot
p1 <- ggplot(data = df, aes(x = x, y = value)) + 
  geom_line(aes(colour = variable), size = 1) +
  scale_color_manual(values = palette_OkabeIto_black)


p2 <- ggplot(data = df, aes(x = x, y = value)) + 
  geom_col(aes(fill = variable)) +
  scale_fill_manual(values = safe_pal)

p1 / p2

Tung
la source