Paleta de cores qualitativa - segura para fotocópia (pronta para escala de cinza)

12

Estou procurando uma paleta de cores qualitativa de 5 classes que pode ser impressa em impressoras em preto e branco.

A imagem abaixo mostra um mapa em cores (superior: qualitativa, inferior: divergente) e como cada uma delas aparece em escala de cinza (lado direito). Ambas as paletas de cores ( Set3e Spectral) pertencem ao ColorBrewer .

  1. [UL] Qualitativo Set3
  2. [UR] Qualitativa Set3 em escala de cinza
  3. [LL] Divergente Spectral
  4. [LR] Desviando Spectralem escala de cinza

insira a descrição da imagem aqui

Sofro especialmente em discernir grupos na imagem superior direita, enquanto a parte inferior (espectral) é muito melhor, se não perfeita (não posso dizer qual era azul ou vermelho). E, de acordo com o ColorBrewer, o esquema de cores Spectral (o que usei aqui) é o único photocopy safepara a paleta de 5 classes.

Reduzir as classes (para 3 ou 4) pode ser uma opção, mas receio que não tenha sido o objetivo deste mapa.

Provavelmente isso não está relacionado aos softwares GIS, mas basicamente uso o QGIS, que oferece ColorBrewer, cpt-city e outras paletas e rampas de cores.


@obrl_soil sugeriu que este é o conjunto de cores Viridis

insira a descrição da imagem aqui


@underdark sugeriu que este é dois tipos de 4 colors + whiteabordagem.

insira a descrição da imagem aqui

ESQUERDA: Laranja-Vermelho + branco (sequencial), DIREITA: Roxo-Laranja + branco (divergente)

Kazuhito
fonte
Você já encontrou uma resposta boa, mas eu gostaria de apresentá-lo a colorbrewer2.org que permite gerar esquemas de cores agradáveis
LaughU
@LaughU Na verdade, é um site ao qual me refiro ... desculpe se não foi mencionado claramente. Mas obrigado, é realmente um bom recurso, eu concordo.
Kazuhito

Respostas:

8

Você já deu uma olhada na família viridis? A maneira mais fácil de adicioná-los no QGIS é através deste link - http://rocksandwater.net/blog/2016/07/qgis_perceptually_uniform_colorramps/

obrl_soil
fonte
1
Muito obrigado @obrl_soil! Isso é ótimo. Acho que vi o nome viridis na comunidade R algum tempo antes, mas provavelmente não havia prestado atenção suficiente. (Resultado viridis adicionado ao meu post como Editar).
Kazuhito
10

Como o ColorBrewer sugere, apenas o esquema de cores espectrais de 5 classes é "seguro" para o uso de fotocopiadora (por exemplo, escala de cinza). A solução mais fácil é usar outra maneira de distinguir as classes, como hachuras.

No QGIS, é simples escolher 5 hachuras diferentes em uma classificação alterando o pincel de preenchimento.

insira a descrição da imagem aqui

Ou usando um preenchimento de padrão de ponto com diferentes distâncias:insira a descrição da imagem aqui

Ian Turton
fonte
1
Obrigado @iant, mas devo aceitá-lo (quero dizer, o ColorBrewer) implica que não há como produzir um esquema de cores de 5 classes além desse conjunto específico? Nesse caso, não tenho nenhum problema em ir para incubação.
Kazuhito
7

O Colorbrewer 2.0 basicamente nos diz que não há esquema de cores "seguro para fotocópia" com 5 cores, então aqui está a solução de 4 cores:

insira a descrição da imagem aqui

Obviamente, ele não conta "branco" como uma quinta cor em potencial, portanto essa solução ainda pode ser suficiente para a sua aplicação.

underdark
fonte
1
Agradável. Adicionar branco é uma ideia brilhante que nunca me veio à mente (eu estava quase pronto para desistir do ColorBrewer). Obrigado!
Kazuhito
4

Eu tive o mesmo problema. Eu precisava de 8 aulas. Eu criei uma solução alternativa que permite que você faça pelo menos as categorias mais distintas possíveis. Aumenta a distância entre os valores de saturação de cada cor que são criados pelo colorbrewer por padrão. Com isso, você obtém as categorias mais distinguíveis na impressão em preto e branco. As duas parcelas mudam apenas um pouco, como você pode ver abaixo, mas no bw isso pode fazer a diferença.

Precisa conhecer o R ​​para usar o script:

library("ggplot2")
library("colorspace")
library("RColorBrewer")


# display all color scales with n=8
display.brewer.all(n = 8,type = "div")
# choose a brewer
brewer.pal(8,"Spectral")
# transform palette to HSV values
(palette.HSV<-as(hex2RGB(brewer.pal(8,"Spectral")), "HSV")) 

# plot
plot(1:8,1:8,pch=21,bg=hex(palette.HSV),col=hex(palette.HSV),cex=5)

# sort and get indices of HSV values
sort(palette.HSV@coords[,2],index.return=TRUE)

# calculate steps for distance
9/8 # 8 classes until 0.9 saturation

# change accordingly
palette.HSV@coords[1,2]<-0.7875 # swapped with second
palette.HSV@coords[2,2]<-0.675
palette.HSV@coords[3,2]<-0.5625
palette.HSV@coords[4,2]<-0.3375
palette.HSV@coords[5,2]<-0.225
palette.HSV@coords[6,2]<-0.1125
palette.HSV@coords[7,2]<-0.45
palette.HSV@coords[8,2]<-0.9

plot(1:8,1:8,pch=21,bg=hex(palette.HSV),col=hex(palette.HSV),cex=5)

# save your costum colorscale
my.scale<-hex(palette.HSV)

valores alterados valores alterados

valores originais insira a descrição da imagem aqui

edit: se você também deseja alterar o brilho (veja a discussão abaixo), use o seguinte código:

# change brightness accordingly (reverse order)
palette.HSV@coords[1,3]<- 0.225
palette.HSV@coords[2,3]<-0.4
palette.HSV@coords[3,3]<-0.5625
palette.HSV@coords[4,3]<-0.9
palette.HSV@coords[5,3]<-0.7875
palette.HSV@coords[6,3]<-0.675
palette.HSV@coords[7,3]<-0.3
palette.HSV@coords[8,3]<-0.1125
joaoal
fonte
1
Obrigado @joaoal! Você se importa em adicionar uma representação em escala de cinza para cada imagem? Meu teste rápido com seu código produziu imagens quase idênticas (para meus olhos destreinados) quando elas se transformaram em escala de cinza de 8 bits.
Kazuhito
1
@ Kazuhito não sabe como fazer isso na R. Na impressão bw, minha solução é claramente um pouco melhor que a padrão, no entanto, como escrevi acima, é difícil fazer realmente boas diferenças se você usar 8 classes. no seu caso com 5 classes, pode ser melhor. Além de melhorar a rampa de cores, você também pode adicionar símbolos ao seu mapa no centro de cada polígono, onde cada símbolo único representa uma categoria diferente ou você pode usar estilos de preenchimento diferentes, como padrões de linhas. minha solução foi para dados rasterizados onde você não pode fazer isso.
joaoal
2
+1 @joaoal Obrigado por suas informações adicionais. Apenas um pensamento, mas que tal mudar palette.HSV@coords[x,3]qual corresponde ao Valor (ou Brilho) no espaço de cores HSV? (Você está trabalhando na saturação). Meu teste rápido coords[ ,3]produziu mais contraste, mas não tenho certeza do seu ambiente.
Kazuhito
2
@ Kazuhito Eu tentei no meu exemplo e não produzi melhores resultados, apenas alterando o brilho. Em teoria, a saturação está diretamente ligada ao acinzentado, onde 0 é branco e 1 é preto em preto-e-branco / ou em cores, por exemplo "vermelho" em cores. O brilho também afeta o cinza na impressão, mas de alguma forma o seu alcance é limitado, pois altera a cor entre cores, por exemplo, "vermelho" e "preto". Uma combinação de ambos pode ser uma opção e eu adicionei algum código acima para explicar isso. Tive a impressão de que apenas melhora a diferença de cores mais claras, mas piora as mais escuras.
joaoal
Obrigado, bom saber. Também concordo que não devemos colocar muito em valor.
Kazuhito