Serie di colori "migliori" da utilizzare per differenziare le serie in grafici di qualità di pubblicazione


89

Sono stati condotti studi su quali sono i migliori set di colori da utilizzare per mostrare più serie sulla stessa trama? Ho appena usato le impostazioni predefinite matplotlibe sembrano un po 'infantili poiché sono tutti colori brillanti e primari.


28
Questo non risponde alla tua domanda, ma penso sia importante menzionarlo. Quando possibile, qualsiasi combinazione di colori scelta dovrebbe essere integrata con simboli o stili di linea diversi in modo tale che quando la trama è stampata in bianco e nero è ancora facile da capire. Troppo spesso gli autori fanno affidamento esclusivamente sul colore, rendendo le figure inutili per il daltonico e per coloro che preferiscono leggere la versione stampata in bianco e nero del documento. Le trame dovrebbero sempre, se possibile, funzionare in bianco e nero e lavorare "meglio" a colori.
WetlabStudent,

11
+1 a MHH. Un leggendario commento televisivo sullo snooker fa indirettamente lo stesso punto: "Steve sta andando per la palla rosa - e per quelli di voi che stanno guardando in bianco e nero, il rosa è vicino al verde". Spiegazione per i lettori più giovani: viene da un momento in cui alcune persone potevano permettersi la televisione a colori, ma altre dovevano optare per la televisione in bianco e nero più economica.
Nick Cox,

5
"Il migliore" per quale scopo? Questa non è una domanda banale o irriverente. Per impressionare i lettori di un forum su Internet, uso simboli grafici che funzionano senza colore e poi li decorano con i colori dell'arcobaleno (che possono essere significativi ma sono lì principalmente per attirare l'attenzione e dare un senso di "qualità"). Per le trame che intendono trasmettere dati, potrebbe essere scelta un'altra combinazione di colori, mentre per le trame create in modo esplorativo per rivelare possibili schemi imprevisti (in una gestalt visiva ) lo schema dovrebbe dipendere dallo scopo: differenziazione, aggregazione, selezione, altro?
whuber

2
@whuber: fai un punto. Avrei dovuto specificare che intendevo pubblicare nella letteratura scientifica, e in generale intendevo chiedere risposte a ciascuna delle categorie di aggregazione, selezione, differenziazione, ecc. In effetti, aggregazione e differenziazione spesso non sono obiettivi separati: nelle figure da uno dei miei articoli ( dx.doi.org/10.1063/1.4864755 ), avevo bisogno di entrambi (e non credo di aver fatto un ottimo lavoro). (Mi dispiace per quelli di voi che non sono nei campus accademici; proverò presto a mettere un collegamento pubblico generale)
David Hollman,

Risposte:


53

Un riferimento comune per la scelta di una tavolozza di colori è il lavoro di Cynthia Brewer su ColorBrewer . I colori sono stati scelti in base a modelli percettivi nelle mappe coropletiche, ma la maggior parte degli stessi consigli si applica all'uso del colore in qualsiasi tipo di grafico per distinguere i modelli di dati. Se il colore deve solo distinguere tra le diverse linee, allora una tavolozza qualitativa è in ordine.

Spesso il colore non è necessario nei grafici a linee con solo poche linee e diversi simboli di punti e / o tratteggi sono abbastanza efficaci. Un problema più comune con i grafici a linee è che se le linee si sovrappongono frequentemente, sarà difficile distinguere diversi modelli, indipendentemente dai simboli o dal colore che si utilizzano. Stephen Kosslyn raccomanda una regola empirica generale per avere solo 4 righe in una trama. Se hai di più considera di dividere le linee in una serie di piccoli grafici multipli. Ecco un esempio che mostra la raccomandazione

Nessun colore necessario e le etichette sono più che sufficienti.


4
Adoro la palette "Dark2" di ColorBrewer!
Gimelist

5
Grazie per la raccomandazione di ColorBrewer! Questo è il tipo di cosa che stavo cercando.
David Hollman,

L'immagine in scala di grigi non funziona se ci sono due serie con lo stesso valore nel mezzo da qualche parte (le due serie non possono essere ricondotte oltre quel punto) o alla fine (le etichette non saranno in grado di distinguere quale la serie è quale). È fantastico quando funziona però ...
niente

Accetto @ nought101 per il mezzo (le coincidenze finali hanno appena messo l'etichetta da qualche parte prima della fine). È uno dei motivi per non utilizzare effettivamente l'interpolazione lineare tra i punti, ma utilizzare un tipo di spline. In tal caso la spline si curverà in direzioni diverse. Ciò accade molto spesso in densi grafici di coordinate parallele. (Il jitter può anche aiutare con i dati con molti legami, come i dati con un numero intero basso).
Andy W,

1
Le tue recensioni su dati vale a dire. i libri su Amazon sono incredibili. Grazie per questo.
Andy W,

40

Molti consigli straordinariamente buoni in altre risposte, ma qui ci sono alcuni punti extra dai miei consigli di basso livello agli studenti. Questo è solo un consiglio, naturalmente, a cui pensare tenendo conto delle domande chiave: che cosa intende fare il mio grafico? Cosa ha senso con questi dati? Chi sono i lettori? Cosa mi aspetto che i colori facciano all'interno del grafico? Il grafico funziona bene, indipendentemente dai dogmi di qualcun altro?

Inoltre, l'importanza del colore varia enormemente da un grafico all'altro. Per una coropleth o una patch map, in cui l'idea è davvero che aree diverse siano colorate o almeno ombreggiate in modo diverso, il successo di un grafico è legato al successo della sua combinazione di colori. Per altri tipi di grafici, i colori possono essere eliminabili o addirittura un fastidio.

  1. I tuoi colori sono tutti necessari? Ad esempio, se diverse variabili o gruppi sono chiaramente distinti da etichette di testo in diverse regioni di un grafico, anche i colori separati sarebbero spesso eccessivi. Fai attenzione all'insalata di frutta o agli effetti technicolor dreamcoat. Per un grafico a torta con etichette di testo su o per le sezioni, il colore non trasmette informazioni aggiuntive, ad esempio. (Se il tuo grafico a torta dipende da una chiave o una legenda, è probabile che tu stia provando il tipo sbagliato di grafico.)

  2. Non fare mai affidamento su un contrasto tra rosso e verde, poiché così tante persone fanno fatica a distinguere questi colori.

  3. Le sequenze arcobaleno (ROYGBIV o rosso-arancio-giallo-verde-blu-indaco-viola) possono attrarre per motivi fisici, ma in pratica non funzionano bene. Ad esempio, il giallo è di solito un colore debole mentre l'arancione e il verde sono generalmente più forti, quindi l'impressione non è nemmeno di una sequenza monotonica.

  4. Evitare qualsiasi combinazione di colori che ha la conseguenza di grandi macchie di colore forte.

  5. Una sequenza dal rosso scuro al blu scuro funziona bene quando è necessaria una sequenza ordinata. Se il bianco è (come al solito) il colore di sfondo ovunque, non usarlo, ma passa dal rosso pallido al blu pallido. [aggiunto il 1 marzo 2018] Forse troppo ovvio per sottolineare: il rosso ha connotazioni di negativo e / o di pericolo per molti, il che può essere utile, e il blu può quindi significare positivo. Troppo ovvio da sottolineare, ma lo faccio comunque: il rosso e il blu hanno connotazioni politiche in molti paesi.

  6. Blu e arancione vanno bene insieme (un cenno di ringraziamento a Hastie, Tibshirani e Friedman qui: http://web.stanford.edu/~hastie/local.ftp/Springer/OLD/ESLII_print4.pdf ) [aggiunto il 1 marzo 2018] Molti i libri introduttivi sulla visualizzazione ora raccomandano l'arancione, il blu e il grigio come tavolozza di base: arancione e / o blu per ciò che ti interessa e grigio per lo sfondo.

  7. La scala di grigi dal grigio chiaro al grigio scuro può funzionare bene ed è una buona idea quando la riproduzione del colore è fuori discussione. (È una pessima stampante che non è in grado di fare una discreta bash in scala di grigi.) (Se vuoi, grigio; le preferenze cambiano attraverso gli oceani, a quanto pare; proprio come con il colore e il colore.)

  8. [aggiunto il 5 agosto 2016] Un principio abbastanza generale è che spesso due colori funzionano molto meglio di molti. Se due gruppi sono entrambi di interesse, scegli colori ugualmente forti (ad esempio rosso o arancione e blu). Se un gruppo è di particolare interesse tra diversi, rendilo blu o arancione e lascia che gli altri siano grigi. L'uso di sette colori per sette gruppi in linea di principio porta le informazioni, ma è difficile persino concentrarsi su un colore alla volta quando c'è concorrenza da parte di molti altri. Piccoli multipli possono essere migliori per diversi gruppi di una trama multicolore.


1
Ottimo punto sui colori deboli e forti
Shadowtalker

2
Il punto 2 è MOLTO importante. Uno dei miei insegnanti di statistica era daltonico e felicemente usato "giallo chiaro" e "giallo verde chiaro" in un grafico. Il colore era praticamente identico a noi, ma per lui erano facilmente distinguibili.
Christian Sauer,

1
Grazie per i suggerimenti, in particolare # 2. Ho guardato indietro alle mie trame e mi sono reso conto che il rosso e il verde sono i primi due colori che matplotlib sceglie sempre. Non è eccezionale.
David Hollman,

Sembra un default dopey.
Nick Cox,

27

In realtà, negli ultimi anni sono state condotte molte ricerche in merito.

Un punto importante è la "risonanza semantica". Ciò significa fondamentalmente "colori che corrispondono a ciò che rappresentano", ad esempio una serie temporale per soldi dovrebbe essere colorata di verde, almeno per un pubblico negli Stati Uniti. Ciò apparentemente migliora la comprensione. Un articolo molto interessante sull'argomento è di Lin, et al (2013): http://vis.stanford.edu/papers/semantically-resonant-colors

C'è anche il simpatico generatore di colori iWantHue, su http://tools.medialab.sciences-po.fr/iwanthue/ , con molte informazioni nelle altre schede.

Riferimenti

Lin, Sharon, Julie Fortuna, Chinmay Kulkarni, Maureen Stone e Jeffrey Heer. (2013). Selezione di colori semanticamente risonanti per la visualizzazione dei dati. Forum di computer grafica (Proc. EuroVis), 2013


13
+1 ... tuttavia, alcune cose - come il tuo esempio di denaro - non sono universali. Il denaro può essere verde (-ish) negli Stati Uniti. Non è verde dappertutto e l'associazione con il colore può variare da paese a paese (ad esempio, qualcuno in Germania potrebbe avere maggiori probabilità di associare il blu al denaro, anche se oggigiorno tende a presentarsi in una vasta gamma di colori).
Glen_b,

@Glen_b buon punto
shadowtalker

1
+1 per citare documenti, che rispondono meglio alle prime tre parole della domanda :-)
David Hollman

22

Paul Tol fornisce una combinazione di colori ottimizzata per le differenze di colore (ovvero, dati categorici o qualitativi) e visione daltonica sul suo sito Web , e in dettaglio in un "technote" (file PDF) collegato ad esso. Egli afferma:

Per rendere la grafica con i tuoi risultati scientifici il più chiara possibile, è utile avere una tavolozza di colori che sono:

  • distinto per tutte le persone, compresi i lettori daltonici;
  • distinto dal bianco e nero;
  • distinto su schermo e carta; e
  • si abbinano ancora bene insieme.

Ho preso la combinazione di colori dalla sua "Tavolozza 1" dei 9 colori più distinti e l'ho inserita nel mio matplotlibrcfile sotto axes.color_cycle:

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

Quindi, prendendo in prestito dalla risposta di Joe Kington le linee predefinite come tracciato da:

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()

risulta in:

inserisci qui la descrizione dell'immagine

Per mappe dei colori divergenti (ad esempio, per rappresentare valori scalari), il miglior riferimento che ho visto è il documento di Kenneth Moreland disponibile qui " Mappe dei colori divergenti per la visualizzazione scientifica ". Ha sviluppato lo schema cool-warm per sostituire lo schema arcobaleno e "presenta un algoritmo che consente agli utenti di generare facilmente le proprie mappe dei colori personalizzate".

Un'altra utile fonte di informazioni sull'uso del colore nelle visualizzazioni scientifiche viene da Robert Simmon, l'uomo che ha creato l'immagine "Blue Marble" per la NASA. Guarda la sua serie di post sul sito web dell'Osservatorio della Terra.


6
+1 all'unica (!) Risposta su nove che mostra effettivamente i colori in risposta alla domanda sui "migliori colori".
amoeba,

@amoeba: beh non più :-)
Tung

20

Su colorbrewer2.org puoi trovare combinazioni di colori qualitativi , sequenziali e divergenti . Qualitative massimizza la differenza tra i colori successivi, ed è quello che sto usando in gnuplot. Il bello del sito è che puoi facilmente copiare i codici esadecimali dei colori in modo che siano un gioco da ragazzi importare. Ad esempio, sto usando il seguente set di 8 colori:

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

È piuttosto piacevole e produce risultati chiari.

Come nota a margine , il sequenziale viene utilizzato quando è necessario un gradiente uniforme e divergente quando è necessario evidenziare le differenze rispetto a un valore centrale (ad esempio altezza della montagna e profondità del mare). Puoi leggere di più su queste combinazioni di colori qui .


1
Personalmente non trovo il giallo brillante per essere un chiaro colore della trama
rhombidodecahedron

11

Esistono molti siti Web dedicati alla scelta delle tavolozze dei colori. Non so che esiste un particolare set di colori che è oggettivamente il migliore, dovrai scegliere in base al tuo pubblico e al tono del tuo lavoro.

Dai un'occhiata a http://www.colourlovers.com/palettes o http://design-seeds.com/index.php/search per iniziare. Alcuni hanno colori vicini per mostrare gruppi diversi, ma altri ti daranno colori complementari su una gamma più ampia.

Puoi anche controllare i set di colori predefiniti non predefiniti in Matplotlib .


5

Mi piace la palette Dark2 di colorbrewer per grafici a dispersione. Lo abbiamo usato nel libro di ggobi , www.ggobi.org/book . In caso contrario, le tavolozze dei colori sono pensate per le aree geografiche piuttosto che per i grafici dei dati. Una buona scelta del colore è ancora un problema per i grafici a punti.

I pacchetti R colorspacee dichromatsono utili. colorspaceconsente la selezione dei colori attorno alla ruota: è possibile dedicare ore / giorni alla messa a punto. dichromataiuta a verificare la cecità.

ggplot2 generalmente ha buone impostazioni predefinite, sebbene non necessariamente a prova di daltonismo.

Lo schema divergente dal rosso al blu sembra buono sul tuo computer ma non si proietta bene.


3

Un'altra possibilità sarebbe quella di trovare una serie di colori che siano a) equidistanti in LAB, b) prendere in considerazione il daltonismo, e c) adattarsi alla gamma dello spazio colore sRGB così come alle gamme degli spazi CMYK più comuni.

Penso che l'ultimo requisito sia una necessità per qualsiasi metodo di selezione dei colori: non serve a niente se i colori sembrano buoni sullo schermo ma sono confusi quando stampati in un processo CMYK. E poiché l'OP ha specificato la "qualità della pubblicazione", presumo che i grafici verranno effettivamente stampati in CMYK.


3

Questo è il mio schema preferito. Ha 20 (!!!!) colori distinti, tutti facilmente distinguibili. Tuttavia, probabilmente non riesce per i daltonici.

#e6194b
#3cb44b
#ffe119
#0082c8
#f58231
#911eb4
#46f0f0
#f032e6
#d2f53c
#fabebe
#008080
#e6beff
#aa6e28
#fffac8
#800000
#aaffc3
#808000
#ffd8b1
#000080
#808080
#ffffff
#000000

2

Quando si tracciano linee, è necessario fare attenzione al verde e al giallo, che non vengono visualizzati bene sui proiettori. Dal momento che alla fine riutilizzo la maggior parte delle mie trame nelle presentazioni, evito questi colori anche se l'intenzione originale è per la pubblicazione su schermo o su carta.

Nell'interesse di mantenere un contrasto elevato, questo mi lascia con nero, rosso, blu, magenta, ciano e se ne ho davvero bisogno uso il grigio. In effetti, la maggior parte di questi sono colori brillanti, primari o secondari. So che potrebbe non essere ottimale da un punto di vista estetico, ma sono più interessato alla chiarezza di ciò che sto presentando. D'altra parte, riutilizzare costantemente gli stessi colori da una tavolozza limitata può essere una buona cosa esteticamente.

Se stai usando più di 6 linee, stai riempiendo più spazio e stai andando verso la stampa di blocchi di colore. Per questo tipo di trama penso che ogni caso debba essere considerato separatamente. Vuoi che gli estremi si distinguano o gli incroci zero? I tuoi dati sono ciclici (ad esempio 0 e 2π dovrebbero usare lo stesso colore)? Esiste un'analogia con standard come blu / rosso per la temperatura? Il bianco rappresenta NaN, nessun dato o verrà utilizzato come evidenziazione? etcetc.


2

Per gli spettatori daltonici, CARTOColors ha uno schema qualitativo favorevole ai daltonici chiamato Safeche si basa sulle popolari combinazioni di colori di Paul Tol . Questa palette è composta da 12 colori facilmente distinguibili.

Un'altra grande tavolozza qualitativa per i daltonici è lo schema di Okabe e Ito proposto nel loro articolo "Color Universal Design (CUD): come realizzare figure e presentazioni che siano amichevoli per i daltonici".

### 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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.