定性调色板-复印安全(可用于灰度)


12

我正在寻找可以在黑白打印机中打印的5类定性调色板。

下图显示了彩色地图(上图:定性图,下图:发散图),以及每张图的灰度外观(右侧)。这两个调色板(Set3Spectral)都属于ColorBrewer

  1. [UL]定性 Set3
  2. [UR] Set3 灰度定性
  3. [LL]发散 Spectral
  4. [LR] Spectral灰度差异

在此处输入图片说明

我尤其会在右上方的图像中辨别组,而底部(光谱)则更好,即使不是完美的(我不能说是蓝色还是红色)。根据ColorBrewer所说,“光谱”配色方案(我在这里使用的方案)是唯一photocopy safe适用于5类调色板的。

减少类(减少到3或4)可能是一种选择,但恐怕这不是此地图的预期目的。

这可能与GIS软件无关,但是我基本上使用QGIS,它提供了ColorBrewer,cpt-city和其他调色板和色带。


@obrl_soil建议这是Viridis颜色集

在此处输入图片说明


@underdark建议这是两种类型的4 colors + white方法。

在此处输入图片说明

左:橙红色+白色(顺序),右:紫橙色+白色(发散)


您已经找到了一个不错的答案,但是我想向您介绍colorbrewer2.org,它可以让您生成漂亮的配色方案
LaughU

@LaughU实际上,这是我一直在指的一个网站...如果未明确提及,则对不起。但是,我同意,这确实是很好的资源。
Kazuhito

Answers:



10

正如ColorBrewer建议的那样,对于复印机(即灰度级)使用,仅5类光谱配色方案是“安全的”。最简单的解决方案是使用其他方法来区分类,例如阴影线。

在QGIS中,只需更改填充笔刷即可在一个分类中选择5个不同的阴影。

在此处输入图片说明

或使用具有不同距离的点图案填充:在此处输入图片说明


1
@iant,谢谢,但是我是否应该接受(我的意思是,ColorBrewer)意味着除了该特定设置外,没有其他方法可以产生5级配色方案?如果是这样的话,我就可以毫无问题地进行孵化了。
Kazuhito

7

Colorbrewer 2.0基本上告诉我们,没有5种颜色的“影印安全”配色方案,因此这是4种颜色的解决方案:

在此处输入图片说明

当然,它不会将“白色”视为潜在的第五种颜色,因此该解决方案对于您的应用程序可能仍然足够。


1
真好 添加白色是一个绝妙的主意(我几乎已经准备放弃ColorBrewer)。谢谢!
Kazuhito

4

我有同样的问题。我需要八节课。我创建了一个变通办法,使您至少可以使类别最有区别。默认情况下,它会增加由颜色创建程序创建的每种颜色的饱和度值之间的距离。这样,您就可以在黑白打印中获得最明显的类别。如下图所示,这两个图的变化很小,但在bw中可以有所作为。

需要知道R使用脚本:

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)

改变值 改变值

原始值 在此处输入图片说明

编辑:如果您还想更改亮度(请参见下面的讨论),请使用以下代码:

# 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

1
谢谢@joaoal!您介意为每个图像添加灰度表示吗?当您将代码转换为8位灰度时,我对您的代码进行的快速试用产生了几乎相同的图像(对于我未经训练的眼睛)。
Kazuhito

1
@Kazuhito不知道如何在R中执行此操作。在bw打印中,我的解决方案显然比默认解决方案好一点,但是,正如我上面所写的,如果您使用8个类,则很难做出真正的好区别。在您的情况下有5个班级可能会更好。除了改善颜色渐变之外,您还可以考虑在每个多边形的中心向地图添加符号,其中每个唯一符号代表一个不同的类别,或者您可以使用不同的填充样式,例如线条图案。我的解决方案是处理无法处理的栅格数据。
joaoal

2
+1 @joaoal感谢您提供其他信息。只是一个想法,但是如何更改palette.HSV@coords[x,3]HSV色彩空间中与“值”(或“亮度”)相对应的值?(您一直在研究饱和度)。我的快速测试coords[ ,3]产生了更多的对比,但是我不确定您的环境如何。
Kazuhito

2
@Kazuhito我以我的示例为例进行了尝试,仅更改亮度并没有产生更好的结果。理论上,饱和度直接与灰度相关联,在黑白打印中0为白色,黑色为1,或者在彩色打印中为全色(例如“红色”)时,饱和度直接与灰色有关。亮度也会影响打印的灰度,但由于它会在全色(例如“红色”和“黑色”)之间改变颜色,因此您的范围受到某种程度的限制。可以将两者结合使用,为此我添加了一些代码。我的印象是只能改善浅色的差异,但会使深色变差。
joaoal

谢谢,很高兴知道。我也同意我们不应过多地重视价值。
Kazuhito
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.