grDevices 中基于 HCL 的调色板



从 R 3.6.0 开始,grDevices 中提供了一个新的 hcl.colors() 函数,它提供了一系列基于 HCL 的调色板,其感知特性远好于现有的基于 RGB/HSV 的调色板,如 rainbow()。随附的新 hcl.pals() 函数列出了 hcl.colors() 可用的调色板名称。它是 colorspace 包中预定义调色板的基本精简实现,与 ColorBrewer、CARTO、viridis、scico 等许多其他包中的调色板非常接近。

image()filled.contour() 的默认颜色现在基于 hcl.colors()。调色板生成函数 rainbow()gray.colors() 等获得了一个新的 rev 参数,以方便反转颜色的顺序。

HCL 与 RGB/HSV 调色板

HSV(色相-饱和度-明度)RGB(红-绿-蓝)空间 的一个简单转换,因此它是许多软件系统中调色板的便捷选择(另请参阅 ?hsv)。但是,HSV 颜色仅能很差地捕捉色相、鲜艳度/饱和度/色度以及明度/亮度/亮度/明度等感知特性,因此相应的调色板通常不是统计图形和数据可视化的理想选择,请参阅 http://colorspace.R-Forge.R-project.org/articles/endrainbow.html

相比之下,HCL(色相-色度-亮度)颜色 更适合捕捉人类的色彩感知(另请参阅 ?hcl)。正如我们在最近的 arXiv:1903.06490 论文中所讨论的,可以根据 HCL 坐标推导出更好的调色板。从概念上讲,通常区分三种类型的调色板

  • 定性:用于编码分类信息,即没有特定类别的顺序,并且每个颜色都应获得相同的感知权重。
  • 顺序:用于编码有序/数字信息,即颜色从高到低(或反之)。
  • 发散:设计用于围绕中心中立值对数字信息进行编码,即颜色从中间值向两个极端发散。

hcl.colors() 函数提供了 colorspace 包中预定义调色板的基本精简实现,请参阅 http://colorspace.R-Forge.R-project.org/articles/hcl_palettes.html。除了上述类型之外,这些函数还区分了“发散”调色板,其中两个臂被限制为相当平衡,而不是灵活的“发散 x”调色板,后者结合了两个顺序调色板,没有任何限制。后一组还包括 cividis 调色板,因为它基于两种不同的色调(蓝色和黄色),但它实际上是一个顺序调色板(从暗到亮)。

可用的 HCL 调色板

可以使用 hcl.pals() 函数查询所有可用 HCL 调色板的名称,在运行 example("hcl.colors") 时,它们也会以色板的形式显示。许多调色板与其他各种包(包括 RColorBrewerrcartocolorviridisscico 等)中同名调色板非常接近,请参阅 http://colorspace.R-Forge.R-project.org/articles/approximations.html

默认的 HCL 调色板是广泛使用的 viridis 调色板,这是一个顺序调色板,整个色调相对较高,因此它也可以合理地用作定性调色板。然而,虽然 viridis 是一个相当稳健的默认调色板,但对于大多数可视化来说,都有更合适的 HCL 调色板可用。例如,"Dark 3" 适用于对最多五个组中的点或线进行着色,"YlGnBu" 是一个顺序调色板,类似于 "viridis",但对齐了色度/亮度,而 "Green-Brown""Blue-Red 3" 是对色盲安全的发散调色板。

图形中热图的默认调色板

graphics 包中唯一使用基于 RGB/HSV 的调色板作为其默认颜色的函数是使用 heat.colors()image() 和使用 cm.colors()filled.contour() 的热图。它们的默认值现在已更改为 "YlOrRd" 调色板,该调色板与同名的 ColorBrewer 调色板非常接近。之所以采用这种方法,是因为它是一个顺序调色板,而不是发散调色板,并且使用与之前的 heat.colors() 相似的色调。

image(volcano, col = heat.colors(12))
image(volcano, col = hcl.colors(12, "YlOrRd"))

然而,这种颜色的排序对于在白色背景上突出显示许多小/无趣的值中的几个大/有趣的值并不是最优的。因此,默认情况下,顺序是相反的,产生了更漂亮的显示,现在在 image()filled.contour() 之间也保持一致。

image(volcano)
filled.contour(volcano)

然而,对于旨在在许多大值中突出显示几个小值的显示,调色板中颜色的反转可能是不可取的。鼓励使用这些函数及其默认值的用户和包开发人员测试新默认值对他们有多好。如果您遇到问题,请告诉我们。

参考文献

  • Zeileis A, Fisher JC, Hornik K, Ihaka R, McWhite CD, Murrell P, Stauffer R, Wilke CO (2019)。“ccolorspace:用于操作和评估颜色和调色板的工具箱。”arXiv:1903.06490,arXiv.org 电子打印存档。 http://arxiv.org/abs/1903.06490

  • Ihaka R (2003)。“演示图形的颜色。”第 3 届分布式统计计算国际研讨会(DSC 2003)论文集,2003 年 3 月 20-22 日,维也纳技术大学,维也纳,奥地利。 http://www.ci.tuwien.ac.at/Conferences/DSC-2003/

  • Zeileis A, Hornik K, Murrell P (2009)。逃离 RGBland:为统计图形选择颜色。计算统计与数据分析53,3259-3270。 10.1016/j.csda.2008.11.033