Série “Melhor” de cores a ser usada para diferenciar séries em gráficos com qualidade de publicação

89

Foi realizado algum estudo sobre qual o melhor conjunto de cores a ser usado para mostrar várias séries no mesmo gráfico? Acabei de usar os padrões matplotlib, e eles parecem um pouco infantis, pois são todas cores vivas e primárias.

David Hollman
fonte
28
Isso não responde à sua pergunta, mas acho importante mencionar. Sempre que possível, qualquer esquema de cores escolhido deve ser complementado com diferentes símbolos ou estilos de linha, de modo que, quando a plotagem for impressa em preto e branco, ainda seja fácil entender. Com demasiada frequência, os autores confiam apenas na cor, tornando as figuras inúteis para os daltônicos e para aqueles que preferem ler a versão impressa em preto e branco do seu papel. As plotagens devem sempre, se possível, trabalhar em preto e branco e "melhor" em cores.
WetlabStudent
11
+1 a MHH. Um comentário lendário da televisão sobre o snooker faz o mesmo ponto indiretamente: "Steve está apostando na bola rosa - e para aqueles que assistem em preto e branco, o rosa fica ao lado do verde". Explicação para os leitores mais jovens: isso vem de uma época em que algumas pessoas podiam comprar televisão em cores, mas outras tinham que optar pela televisão em preto e branco mais barata.
Nick Cox
5
"Melhor" para qual finalidade? Esta não é uma pergunta trivial ou irreverente. Para impressionar os leitores de um fórum da Internet, uso símbolos gráficos que funcionam sem cores e os decoro com cores do arco-íris (que podem ser significativas, mas existem principalmente para atrair a atenção e dar uma sensação de "qualidade"). Para plotagens destinadas a transmitir dados, pode ser escolhido outro esquema de cores, enquanto que para plotagens criadas de maneira exploratória para revelar possíveis padrões inesperados (em uma gestalt visual ), o esquema deve depender de uma finalidade: diferenciação, agregação, seleção, de outros?
whuber
2
@ whuber: Você faz um ponto. Deveria ter especificado que pretendia ser publicado na literatura científica e, em geral, pretendia pedir respostas para cada uma das categorias de agregação, seleção, diferenciação etc. De fato, agregação e diferenciação geralmente não são objetivos separados: nas figuras de um dos meus artigos ( dx.doi.org/10.1063/1.4864755 ), eu precisava de ambos (e não acho que fiz um bom trabalho). (Desculpe por aqueles que não nos campi acadêmicos, eu vou tentar colocar um link público em geral em breve)
David Hollman

Respostas:

53

Uma referência comum para a escolha de uma paleta de cores é o trabalho de Cynthia Brewer no ColorBrewer . As cores foram escolhidas com base em padrões de percepção nos mapas de coropletas, mas a maioria dos mesmos conselhos se aplica ao uso de cores em qualquer tipo de gráfico para distinguir os padrões de dados. Se a cor é apenas para distinguir entre as diferentes linhas, uma paleta qualitativa está em ordem.

Frequentemente, a cor não é necessária em gráficos de linhas com apenas algumas linhas, e diferentes símbolos de pontos e / ou padrões de traço são eficazes o suficiente. Um problema mais comum nos gráficos de linhas é que, se as linhas se sobrepuserem com frequência, será difícil distinguir padrões diferentes, independentemente dos símbolos ou cores que você usar. Stephen Kosslyn recomenda uma regra geral por ter apenas 4 linhas em um gráfico. Se você considerar mais, divida as linhas em uma série de pequenos lotes múltiplos. Aqui está um exemplo mostrando a recomendação

Nenhuma cor é necessária e os rótulos são mais que suficientes.

Andy W
fonte
4
Adoro a paleta "Dark2" do ColorBrewer!
Gimelist
5
Obrigado pela recomendação do ColorBrewer! Esse é o tipo de coisa que eu estava procurando.
precisa
A imagem em escala de cinza não funciona se houver duas séries com o mesmo valor no meio em algum lugar (as duas séries não podem ser rastreadas além desse ponto) ou no final (os rótulos não poderão distinguir quais série é qual). É ótimo quando funciona embora ...
naught101
Concorde @ naught101 no meio (as extremidades coincidentes apenas colocam o rótulo em algum lugar antes do final). É uma razão para não usar interpolação linear entre pontos, mas usar algum tipo de spline. Nesse caso, o spline se curvará em direções diferentes. Isso acontece bastante em gráficos de coordenadas paralelas densas. (O tremor também pode ajudar com dados com muitos vínculos, como dados de baixa contagem de números inteiros.) #
Andy W
11
Suas opiniões sobre dados viz. livros na Amazon são incríveis. Obrigado por isso.
Andy W
40

Muitos conselhos excepcionalmente bons em outras respostas, mas aqui estão alguns pontos extras de meus próprios conselhos de nível inferior para os alunos. Tudo isso é apenas um conselho, naturalmente, a ser pensado, dadas as principais perguntas: O que meu gráfico pretende fazer? O que faz sentido com esses dados? Quem são os leitores? O que espero que as cores façam dentro do gráfico? O gráfico funciona bem, independentemente dos dogmas de outra pessoa?

Além disso, a importância da cor varia enormemente de um gráfico para outro. Para um mapa de coroas ou patches, no qual a ideia é de fato que áreas diferentes sejam coloridas ou pelo menos sombreadas de maneira diferente, o sucesso de um gráfico está associado ao sucesso de seu esquema de cores. Para outros tipos de gráficos, as cores podem ser dispensáveis ​​ou até mesmo um incômodo.

  1. Suas cores são todas necessárias? Por exemplo, se diferentes variáveis ​​ou grupos são claramente distinguidos por rótulos de texto em diferentes regiões de um gráfico, cores separadas também costumam ser um exagero. Cuidado com os efeitos da salada de frutas ou do revestimento de sonho tecnicolor. Para um gráfico de pizza com rotulagem de texto nas fatias ou nas fatias, a cor não fornece informações adicionais, por exemplo. (Se seu gráfico depende de uma chave ou legenda, é provável que você esteja tentando o tipo errado de gráfico.)

  2. Nunca confie no contraste entre vermelho e verde, pois muitas pessoas lutam para distinguir essas cores.

  3. Seqüências de arco-íris (ROYGBIV ou vermelho-laranja-amarelo-verde-azul-índigo-violeta) podem apelar por motivos físicos, mas na prática não funcionam bem. Por exemplo, o amarelo é geralmente uma cor fraca, enquanto o laranja e o verde são geralmente mais fortes, portanto a impressão nem é uma sequência monotônica.

  4. Evite qualquer esquema de cores que tenha como consequência grandes manchas de cores fortes.

  5. Uma sequência de vermelho escuro a azul escuro funciona bem quando é necessária uma sequência ordenada. Se o branco é (como sempre) a cor de fundo em qualquer lugar, não o use, mas pule de vermelho pálido para azul pálido. [adicionado em 1 de março de 2018] Talvez seja óbvio demais para sublinhar: o vermelho tem conotações negativas e / ou perigosas para muitos, o que pode ser útil, e o azul pode significar positivo. É óbvio demais para sublinhar, mas faço de qualquer maneira: vermelho e azul têm conotações políticas em muitos países.

  6. Azul e laranja vão bem juntos (um aceno agradecido a Hastie, Tibshirani e Friedman aqui: http://web.stanford.edu/~hastie/local.ftp/Springer/OLD/ESLII_print4.pdf ) [adicionado em 1 de março de 2018] os livros introdutórios sobre visualização agora recomendam laranja, azul e cinza como uma paleta básica: laranja e / ou azul para o que você gosta e cinza para o pano de fundo.

  7. A escala de cinza de cinza claro a cinza escuro pode funcionar bem e é uma boa idéia quando a reprodução de cores está fora de questão. (É uma impressora péssima que não pode fazer uma festa justa em escala de cinza.) (Cinza, se você preferir; as preferências mudam nos oceanos, ao que parece; assim como ocorre com as cores.)

  8. [adicionado em 5 de agosto de 2016] Um princípio bastante geral é que geralmente duas cores funcionam muito melhor do que muitas. Se dois grupos forem de interesse, escolha cores igualmente fortes (por exemplo, vermelho ou laranja e azul). Se um grupo é de particular interesse entre vários, faça-o azul ou laranja e deixe os outros serem cinza. Usar sete cores para sete grupos, em princípio, carrega a informação, mas é difícil até se concentrar em uma cor por vez, quando há concorrência de várias outras. Múltiplos pequenos podem ser melhores para vários grupos do que um gráfico multicolorido.

Nick Cox
fonte
11
Muito bom ponto sobre cores fortes e fracos
shadowtalker
2
O ponto 2 é MUITO importante. Um dos meus professores de estatística era daltônico e felizmente usava "amarelo claro" e "amarelo claro verde" em um gráfico. A cor era praticamente idêntica a nós, mas para ele eram facilmente distinguíveis.
Christian Sauer
11
Obrigado pelas dicas, especialmente o nº 2. Olhei para as minhas parcelas e percebi que vermelho e verde são as duas primeiras cores que o matplotlib sempre escolhe. Isso não é tão bom.
precisa
Isso parece um padrão bobo.
Nick Cox
27

Na verdade, tem havido muita pesquisa sobre isso nos últimos anos.

Um grande ponto é "ressonância semântica". Isso basicamente significa "cores que correspondem ao que representam", por exemplo, uma série temporal de dinheiro deve ser verde, pelo menos para uma audiência nos EUA. Aparentemente, isso melhora a compreensão. Um artigo muito interessante sobre o assunto é de Lin, et al (2013): http://vis.stanford.edu/papers/semantically-resonant-colors

Há também o ótimo gerador de cores iWantHue, em http://tools.medialab.sciences-po.fr/iwanthue/ , com muitas informações nas outras guias.

Referências

Lin, Sharon, Julie Fortuna, Chinmay Kulkarni, Maureen Stone e Jeffrey Heer. (2013). Selecionando cores de ressonância semântica para visualização de dados. Fórum de computação gráfica (Proc. EuroVis), 2013

shadowtalker
fonte
13
+1 ... no entanto, algumas coisas, como seu exemplo de dinheiro, não são universais. O dinheiro pode ser verde (-ish) nos EUA. Não é verde em todos os lugares e a associação com a cor pode variar de país para país (por exemplo, é mais provável que alguém na Alemanha associe azul a dinheiro, embora hoje em dia tenda a apresentar uma ampla variedade de cores).
Glen_b
@Glen_b good point
shadowtalker
11
+1 para papéis citando, que melhor aborda as três primeiras palavras da pergunta :-)
David Hollman
22

Paul Tol fornece um esquema de cores otimizado para diferenças de cores (ou seja, dados categóricos ou qualitativos) e visão daltônica em seu site , e em detalhes em uma "nota técnica" (arquivo PDF) vinculada a ele. Ele afirma:

Para tornar os gráficos com os resultados científicos o mais nítidos possível, convém ter uma paleta de cores que sejam:

  • distinto para todas as pessoas, incluindo leitores daltônicos;
  • distinto de preto e branco;
  • distinto na tela e papel; e
  • ainda combinam bem juntos.

Peguei o esquema de cores da "Paleta 1" das 9 cores mais distintas e coloquei em meu matplotlibrcarquivo em axes.color_cycle:

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

Em seguida, tomando emprestado da resposta de Joe Kington, as linhas padrão, conforme plotadas por:

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

resulta em:

insira a descrição da imagem aqui

Para mapas de cores divergentes (por exemplo, para representar valores escalares), a melhor referência que eu vi é o artigo de Kenneth Moreland disponível aqui " Mapas de cores divergentes para visualização científica ". Ele desenvolveu o esquema frio-quente para substituir o esquema arco-íris e "apresenta um algoritmo que permite aos usuários gerar facilmente seus próprios mapas de cores personalizados".

Outra fonte útil de informações sobre o uso da cor em visualizações científicas vem de Robert Simmon, o homem que criou a imagem "Blue Marble" para a NASA. Veja sua série de postagens no site do Observatório da Terra.

um ben diferente
fonte
6
+1 das únicas (!) Respostas em nove que realmente mostram cores em resposta à pergunta sobre "melhores cores".
Ameba
@amoeba: bem, não mais :-)
Tung
20

No colorbrewer2.org, você encontra esquemas de cores qualitativos , seqüenciais e divergentes . Qualitativa maximiza a diferença entre cores sucessivas, e é isso que estou usando no gnuplot. A beleza do site é que você pode copiar facilmente os códigos hexadecimais das cores, para facilitar a importação. Como exemplo, estou usando o seguinte conjunto de 8 cores:

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

É bastante agradável e produz resultados claros.

Como observação lateral, sequencial é usado quando você precisa de um gradiente suave e divergente quando precisa destacar diferenças de um valor central (por exemplo, elevação da montanha e profundidade do mar). Você pode ler mais sobre esses esquemas de cores aqui .

Joseph D'Arimathea
fonte
11
Eu pessoalmente não encontrar amarelo brilhante para ser uma cor clara enredo
rhombidodecahedron
11

Existem muitos sites dedicados à escolha de paletas de cores. Não sei se existe um conjunto específico de cores que é objetivamente o melhor; você terá que escolher com base no seu público e no tom do seu trabalho.

Confira http://www.colourlovers.com/palettes ou http://design-seeds.com/index.php/search para começar. Alguns deles têm duas cores próximas para mostrar grupos diferentes, mas outros oferecem cores complementares em uma faixa mais ampla.

Você também pode verificar os conjuntos de cores predefinidos não padrão no Matplotlib .

Jordan Bentley
fonte
5

Eu gosto da paleta Dark2 do colorbrewer para gráficos de dispersão. Usamos isso no livro ggobi , www.ggobi.org/book . Mas, caso contrário, as paletas de cores são destinadas a áreas geográficas e não a plotagens de dados. A boa escolha de cores ainda é um problema para plotagens baseadas em pontos.

Os pacotes R colorspacee dichromatsão úteis. colorspacepermite a seleção de cores ao redor do volante: você pode passar horas / dias em sintonia fina. dichromatajuda a verificar daltonismo.

ggplot2 geralmente possui bons padrões, embora não seja necessariamente uma prova daltônica.

O esquema divergente de vermelho para azul fica bem no seu computador, mas não se projeta bem.

Dianne Cook
fonte
3

Outra possibilidade seria encontrar um conjunto de cores que sejam a) equidistantes no LAB, b) levem em consideração o daltonismo ec) podem caber na gama do espaço de cores sRGB, bem como nas gamas dos espaços CMYK mais comuns.

Acho que o último requisito é uma necessidade para qualquer método de escolha de cores - não adianta se as cores ficam bem na tela, mas ficam confusas quando impressas em um processo CMYK. E como o OP especificou "qualidade da publicação", estou assumindo que os gráficos serão realmente impressos em CMYK.

JenSCDC
fonte
3

Este é o meu esquema favorito. Possui 20 (!!!!) cores distintas, todas facilmente distinguíveis. Provavelmente, porém, falha em pessoas daltônicas.

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

Ao plotar linhas, você deve observar o verde e o amarelo, que não aparecem bem nos projetores. Como, eventualmente, reutilizo a maioria dos meus gráficos em apresentações, evito essas cores, mesmo que a intenção original seja a publicação em tela ou papel.

No interesse de manter um alto contraste, isso me deixa com preto, vermelho, azul, magenta, ciano e, se eu realmente preciso, uso cinza. De fato, a maioria delas são cores vivas, primárias ou secundárias. Sei que pode não ser ideal do ponto de vista estético, mas estou mais interessado na clareza do que estou apresentando. Por outro lado, reutilizar consistentemente as mesmas cores de uma paleta limitada pode ser uma boa coisa esteticamente.

Se você estiver usando mais de 6 linhas, estará preenchendo mais espaço e avançando na plotagem de blocos de cores. Para esses tipos de enredo, acho que cada caso precisa ser considerado separadamente. Deseja que os extremos se destaquem ou os cruzamentos de zero? Seus dados são cíclicos (por exemplo, 0 e 2π devem usar a mesma cor)? Existe uma analogia com padrões como azul / vermelho para temperatura? O branco representa NaN, nenhum dado ou será usado como destaque? etc etc.

craq
fonte
2

Para os visualizadores daltônicos, o CARTOColors possui um esquema qualitativo e amigável para daltônicos, chamado Safebaseado nos esquemas de cores populares de Paul Tol . Esta paleta consiste em 12 cores facilmente distinguíveis.

Outra ótima paleta qualitativa para daltônicos é o esquema de Okabe e Ito proposto em seu artigo "Design universal de cores (CUD): como fazer figuras e apresentações que são amigáveis ​​para as pessoas daltônicas".

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