Palette de couleurs qualitative - sans danger pour les photocopies (prêt pour les niveaux de gris)

12

Je recherche une palette de couleurs qualitatives 5 classes pouvant être imprimée sur des imprimantes noir et blanc.

L'image ci-dessous montre une carte en couleur (en haut: qualitative, en bas: divergente) et à quoi chacun ressemble en niveaux de gris (côté droit). Les deux palettes de couleurs ( Set3et Spectral) appartiennent à ColorBrewer .

  1. [UL] Qualitatif Set3
  2. [UR] Qualitatif Set3 en niveaux de gris
  3. [LL] Divergente Spectral
  4. [LR] Divergence Spectralen niveaux de gris

entrez la description de l'image ici

Je souffre surtout de discerner les groupes dans l'image en haut à droite, tandis que le bas (spectral) est bien meilleur, sinon parfait (je ne peux pas dire lequel était bleu ou rouge). Et selon ColorBrewer, le jeu de couleurs Spectral (celui que j'ai utilisé ici) est le seul photocopy safepour la palette à 5 classes.

Réduire les classes (à 3 ou 4) peut être une option, mais je crains que ce n'était pas le but prévu de cette carte.

Ce n'est probablement pas lié aux logiciels SIG, mais j'utilise essentiellement QGIS qui propose ColorBrewer, cpt-city et d'autres palettes et rampes de couleurs.


@obrl_soil a suggéré qu'il s'agit du jeu de couleurs Viridis

entrez la description de l'image ici


@underdark a suggéré qu'il s'agit de deux types d' 4 colors + whiteapproche.

entrez la description de l'image ici

GAUCHE: Orange-Rouge + blanc (séquentiel), DROITE: Violet-Orange + blanc (divergeant)

Kazuhito
la source
Vous avez déjà trouvé une bonne réponse mais je voudrais vous présenter colorbrewer2.org qui vous permet de générer de jolis schémas de couleurs
LaughU
@LaughU Il s'agit en fait d'un site Web auquel j'ai fait référence ... désolé s'il n'a pas été clairement mentionné. Mais merci, c'est vraiment une bonne ressource, je suis d'accord.
Kazuhito

Réponses:

8

Avez-vous regardé la famille viridis? Le moyen le plus simple de les ajouter dans QGIS est via ce lien - http://rocksandwater.net/blog/2016/07/qgis_perceptually_uniform_colorramps/

obrl_soil
la source
1
Merci beaucoup @obrl_soil! C'est bien. Je pense avoir vu le nom viridis dans la communauté R quelque temps auparavant, mais je n'avais probablement pas fait assez attention. (Ajout du résultat viridis à mon message en tant que Edit).
Kazuhito
10

Comme ColorBrewer le suggère, seul le jeu de couleurs spectrales de 5 classes est "sûr" pour une utilisation avec un photocopieur (c'est-à-dire une échelle de gris). La solution la plus simple consiste à utiliser une autre manière de distinguer les classes telles que les hachures.

Dans QGIS, il est simple de choisir 5 hachures différentes dans une classification en changeant la brosse de remplissage.

entrez la description de l'image ici

Ou en utilisant un remplissage de motif de points avec différentes distances:entrez la description de l'image ici

Ian Turton
la source
1
Merci @iant, mais dois-je comprendre (je veux dire, le ColorBrewer) implique qu'il n'y a aucun moyen de produire un jeu de couleurs à 5 classes autre que cet ensemble particulier? Si c'est le cas, je n'ai aucun problème à faire éclore.
Kazuhito
7

Colorbrewer 2.0 nous dit essentiellement qu'il n'y a pas de schéma de couleurs "sans photocopie" avec 5 couleurs, voici donc la solution à 4 couleurs:

entrez la description de l'image ici

Bien sûr, il ne compte pas le "blanc" comme 5ème couleur potentielle, cette solution peut donc être suffisante pour votre application.

obscur
la source
1
Agréable. Ajouter du blanc est une idée géniale qui ne m'est jamais venue à l'esprit (j'étais presque prêt à abandonner ColorBrewer). Merci!
Kazuhito
4

J'ai eu le même problème. J'avais besoin de 8 cours. J'ai créé une solution de contournement qui vous permet au moins de rendre les catégories les plus distinctes possibles. Il augmente la distance entre les valeurs de saturation de chaque couleur qui sont créées par le colorbrewer par défaut. Vous obtenez ainsi les catégories les plus distinctes en impression noir et blanc. Les deux graphiques ne changent que légèrement, comme vous pouvez le voir ci-dessous, mais en pc, cela peut faire la différence.

Besoin de connaître R pour utiliser le 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)

valeurs modifiées valeurs modifiées

valeurs d'origine entrez la description de l'image ici

modifier: si vous souhaitez également modifier la luminosité (voir la discussion ci-dessous), utilisez le code suivant:

# 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
la source
1
Merci @joaoal! Cela vous dérange d'ajouter une représentation en niveaux de gris pour chaque image? Mon essai rapide sur votre code a produit des images presque identiques (pour mes yeux inexpérimentés) quand elles se sont transformées en niveaux de gris 8 bits.
Kazuhito
1
@Kazuhito ne sais pas comment faire cela dans R. Dans l'impression bw, ma solution est clairement un peu meilleure que la valeur par défaut, mais comme je l'ai écrit ci-dessus, il est difficile de faire de très bonnes différences si vous utilisez 8 classes. dans votre cas avec 5 classes, ce serait mieux. Outre l'amélioration de la rampe de couleurs, vous pouvez également envisager d'ajouter des symboles à votre carte au centre de chaque polygone où chaque symbole unique représente une catégorie différente ou vous pouvez utiliser différents styles de remplissage, par exemple des motifs de ligne. ma solution était pour les données raster où vous ne pouvez pas faire une telle chose.
joaoal
2
+1 @joaoal Merci pour vos informations supplémentaires. Juste une pensée, mais que diriez-vous de changer palette.HSV@coords[x,3]lequel correspondant à la valeur (ou la luminosité) dans l'espace colorimétrique HSV? (Vous avez travaillé sur la saturation). Mon test rapide sur coords[ ,3]produit plus de contraste mais je ne suis pas sûr dans votre environnement.
Kazuhito
2
@Kazuhito Je l'ai essayé pour mon exemple et je n'ai pas donné de meilleurs résultats en changeant seulement la luminosité. En théorie, la saturation est directement liée à la grisaille où 0 est blanc et 1 est noir en noir et blanc ou en couleur par exemple "rouge" en couleur. La luminosité affecte également la grisaille de l'impression, mais votre plage est en quelque sorte limitée car elle change la couleur entre la couleur, par exemple "rouge" et "noir". Une combinaison des deux pourrait être une option et j'ai ajouté du code ci-dessus pour en tenir compte. J'avais l'impression que cela ne fait qu'améliorer la différence dans les couleurs plus claires, mais cela aggrave les plus sombres.
joaoal
Merci, bon à savoir. Je suis également d'accord pour dire que nous ne devrions pas trop insister sur Value.
Kazuhito