Paleta de colores cualitativa: fotocopia segura (escala de grises lista)

12

Estoy buscando una paleta de colores cualitativa de 5 clases que se pueda imprimir en impresoras en blanco y negro.

La imagen de abajo muestra un mapa en color (arriba: cualitativo, abajo: divergente) y cómo se ve cada uno en escala de grises (lado derecho). Ambas paletas de colores ( Set3y Spectral) pertenecen a ColorBrewer .

  1. [UL] Cualitativa Set3
  2. [UR] Cualitativa Set3 en escala de grises
  3. [LL] divergentes Spectral
  4. [LR] Diverge Spectralen escala de grises

ingrese la descripción de la imagen aquí

Especialmente sufro por discernir grupos en la imagen superior derecha, mientras que la inferior (espectral) es mucho mejor, si no perfecta (no puedo decir cuál era azul o rojo). Y de acuerdo con ColorBrewer, el esquema de color espectral (el que usé aquí) es el único photocopy safepara la paleta de 5 clases.

Reducir las clases (a 3 o 4) puede ser una opción, pero me temo que no fue el propósito de este mapa.

Esto probablemente no esté relacionado con el software SIG, pero básicamente uso QGIS que ofrece ColorBrewer, cpt-city y otras paletas y rampas de color.


@obrl_soil sugirió que este es el conjunto de colores Viridis

ingrese la descripción de la imagen aquí


@underdark sugirió que esto es dos tipos de 4 colors + whiteenfoque.

ingrese la descripción de la imagen aquí

IZQUIERDA: naranja-rojo + blanco (secuencial), DERECHA: púrpura-naranja + blanco (divergente)

Kazuhito
fuente
Ya encontraste una buena respuesta, pero me gustaría presentarte a colorbrewer2.org que te permite generar esquemas de color agradables
LaughU
@LaughU De hecho, es un sitio web al que me he referido ... perdón si no se mencionó claramente. Pero gracias, es realmente un buen recurso, estoy de acuerdo.
Kazuhito

Respuestas:

8

¿Has echado un vistazo a la familia viridis? La forma más fácil de agregarlos en QGIS es a través de este enlace: http://rocksandwater.net/blog/2016/07/qgis_perceptually_uniform_colorramps/

obrl_soil
fuente
1
Muchas gracias @obrl_soil! Esto es genial. Creo que vi el nombre viridis en la comunidad R hace algún tiempo, pero probablemente no había prestado suficiente atención. (Se agregó el resultado de viridis a mi publicación como Editar).
Kazuhito
10

Como ColorBrewer sugiere que solo el esquema de color espectral de 5 clases es "seguro" para uso en fotocopiadoras (es decir, escala de grises). La solución más fácil es utilizar alguna otra forma de distinguir las clases, como la eclosión.

En QGIS es simple elegir 5 sombreados diferentes en una clasificación cambiando el pincel de relleno.

ingrese la descripción de la imagen aquí

O usando un relleno de patrón de puntos con diferentes distancias:ingrese la descripción de la imagen aquí

Ian Turton
fuente
1
Gracias @iant, pero ¿debería tomarlo (quiero decir, el ColorBrewer) implica que no hay forma de producir un esquema de color de 5 clases que no sea ese conjunto en particular? Si es así, no tengo ningún problema con la eclosión.
Kazuhito
7

Colorbrewer 2.0 básicamente nos dice que no hay un esquema de color "seguro para fotocopias" con 5 colores, así que aquí está la solución de 4 colores:

ingrese la descripción de la imagen aquí

Por supuesto, no cuenta el "blanco" como un quinto color potencial, por lo que esta solución podría ser suficiente para su aplicación.

bajo oscuro
fuente
1
Agradable. Agregar blanco es una idea brillante que nunca se me ocurrió (estaba casi listo para abandonar ColorBrewer). ¡Gracias!
Kazuhito
4

Yo tuve el mismo problema. Necesitaba 8 clases. Creé una solución alternativa que le permite al menos hacer que las categorías sean lo más distinguibles posible. Aumenta la distancia entre los valores de saturación de cada color que crea el cervecero de color por defecto. Con esto obtienes las categorías más distinguibles en impresión en blanco y negro. Las dos parcelas cambian solo ligeramente, como puede ver a continuación, pero en bw puede marcar la diferencia.

Necesita saber R para usar el 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 cambiados valores cambiados

valores originales ingrese la descripción de la imagen aquí

editar: si también desea cambiar el brillo (vea la discusión a continuación) use el siguiente 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
fuente
1
Gracias @joaoal! ¿Te importa agregar representación en escala de grises para cada imagen? Mi prueba rápida de su código produjo imágenes casi idénticas (para mis ojos no entrenados) cuando se convirtieron en escala de grises de 8 bits.
Kazuhito
1
@Kazuhito no está seguro de cómo hacer eso en R. En la impresión de bw, mi solución es claramente un poco mejor que la predeterminada, sin embargo, como escribí anteriormente, es difícil hacer realmente buenas diferencias si usa 8 clases. en tu caso con 5 clases podría ser mejor. Además de mejorar la rampa de color, también podría considerar agregar símbolos a su mapa en el centro de cada polígono, donde cada símbolo único representa una categoría diferente o podría usar diferentes estilos de relleno, por ejemplo, patrones de línea. mi solución fue para datos ráster donde no puedes hacer tal cosa.
joaoal
2
+1 @joaoal Gracias por su información adicional. Solo un pensamiento, pero ¿qué tal cambiar palette.HSV@coords[x,3]cuál corresponde al Valor (o Brillo) en el espacio de color HSV? (Has estado trabajando en Saturación). Mi prueba rápida coords[ ,3]produjo más contraste, pero no estoy seguro en su entorno.
Kazuhito
2
@Kazuhito Lo probé para mi ejemplo y no obtuve mejores resultados, solo cambié el brillo. En teoría, la saturación está directamente relacionada con el gris donde 0 es blanco y 1 es negro en la impresión en blanco y negro o en el color completo, por ejemplo, "rojo" en la impresión en color. El brillo también afecta el gris en la impresión, pero de alguna manera su rango es limitado, ya que cambia el color entre el color completo, por ejemplo, "rojo" y "negro". Una combinación de ambos podría ser una opción y agregué un código arriba para dar cuenta de eso. Tuve la impresión de que solo mejora la diferencia en los colores más claros, pero empeora los más oscuros.
joaoal
Gracias, es bueno saberlo. También estoy de acuerdo en que no debemos poner demasiado en valor.
Kazuhito