如何为数据可视化选择颜色
颜色的选择是创建有效图表的关键因素。一套好的颜色能够突出数据想要讲述的故事,而一套糟糕的颜色则会掩盖或分散可视化的目的。
本文描述了数据可视化中使用的颜色调色板类型,提供一些与颜色工作时的通用技巧和最佳实践,并重点介绍几个用于生成和测试图表颜色调色板的工具。
- 根据映射到颜色的数据类型选择不同类型的调色板——定性、顺序或发散型。
- 确保在使用颜色时,其具有意义且使用一致。
- 尽量考虑色盲问题,以提高图表的可访问性。
- 向他人展示结果时,务必仔细考虑你的颜色选择,一套好的颜色将使传达给受众的预期信息变得更容易。
调色板类型
数据可视化中有三种主要的调色板类型:
- 定性调色板
- 顺序调色板
- 发散色板
你在可视化中使用哪种色板取决于映射到颜色的数据的性质。
定性色板
当变量具有分类性质时,会使用定性色板。
分类变量是指那些具有不同标签但没有内在顺序的变量。例如包括国家或州、种族和性别。变量的每个可能值都从定性色板中分配一种颜色。
在定性色板中,分配给每个组的颜色需要是不同的。一般来说,你应该尽量将色板的最大尺寸限制在10种颜色或更少。超过这个颜色数量,你开始难以区分组别。如果你有比颜色更多的可能值,那么你应该尝试将值组合在一起,例如将最小的类别设置为单个“其他”类别。多次循环颜色是一个坏主意,因为这会引起混淆。
左侧最小的扇区不仅重复调色板中的颜色,而且彼此之间也相当难以区分。
区分颜色的主要方式是通过色调。通过调整明度和饱和度可以获得颜色的额外变化,但最好不要让差异太大。差异过大可能会暗示某些颜色比其他颜色更重要——尽管在有意使用时,这可以是一个有用的特性。避免使用色调相同但明度和饱和度不同的两种颜色,除非与这些颜色相关联的值是相关的。例如,你可能会有一个 折线图,其中每日读数用浅色线条表示,而周滚动平均值用较深的色调表示。
顺序调色板
当分配给着色的变量是数字或具有固有的有序值时,可以使用顺序调色板来表示。颜色按连续体的数据值分配,通常基于明度、色调或两者。
对于顺序调色板来说,颜色最突出的维度是其明度。通常,较低的值与较浅的颜色相关联,而较高的值则与较深的颜色相关联。然而,这是因为图表通常在白色或类似的浅色背景上。在深色背景下,常见的情况是相反的,较高的值用更明亮、更浅的颜色表示。
顺序色板的次要维度是其色相。你可以只使用单一色相来创建你的色图,主要通过明暗变化来表示数值。然而,将两种颜色之间的跨度作为编码的辅助手段也是值得考虑的。通常,较暖的颜色(偏向红色或黄色)会放在较浅的一端,而较冷的颜色(偏向绿色、蓝色或紫色)则放在较暗的一端。
发散色板
如果我们的数值变量具有一个有意义的中心值,比如零,那么我们可以应用一个发散色板。发散色板本质上是由两个连续色板组合而成,共享的终点位于中心值。大于中心值的会被分配到中心一侧的颜色,而小于中心值的则会被分配到中心另一侧的颜色。
通常,每个组件的顺序调色板会使用独特的色调,以便更容易区分相对于中心的正负值。与顺序调色板类似,中心值通常被分配浅色,以便较深的颜色表示与中心的距离更大。
离散调色板与连续调色板
顺序和发散调色板可以通过两种不同的方式与数据值相关联:要么作为一组离散的颜色,每个颜色与一个数值范围相关联,要么作为数值和颜色之间的连续函数。
创建调色板的工具通常会遵循第一种类型,而创建可视化的工具往往具备建立连续关联的能力。虽然值与颜色之间的连续函数看起来更自动更好,但离散调色板仍然有其优点。
我们区分颜色差异的能力不如区分位置或长度的能力强,因此在将颜色与精确值关联方面我们已经处于劣势。值的离散化可以通过突出数据中的总体模式来减少认知负荷。此外,我们可以以更好地表示数据的方式为离散调色板设置值范围。如果数据包含异常值,那么连续调色板可能会将大部分数据强制进入更窄的值范围。使用离散调色板意味着我们可以创建不等大小的范围来更好地表示数据中的差异。
离散调色板的一个主要缺点是我们失去了比较落入同一类别的元素的能力。在连续调色板中,相近值之间(例如上述示例中德克萨斯州和加利福尼亚州之间)存在一些颜色差异,但在离散情况下则不存在。
使用颜色的额外建议
避免不必要的颜色使用
尽管颜色是数据可视化的重要组成部分,但明智的做法是保持克制,仅在合适的地方使用颜色。你创建的并非每个图表都需要多种颜色。如果你只有两个变量要绘制,它们很可能通过垂直和水平位置或长度来编码。颜色通常只在需要将第三个变量编码到图表中,或者它是像饼图这样的专业图表的组成部分时才会出现。然而,在某些情况下,可以添加颜色来强调特定发现或作为额外的突出显示编码。
左侧的彩虹条颜色没有意义,应该避免使用。右侧,大多数条形是中性灰色,以突出两种彩色条形的比较。
在图表中保持颜色一致性
如果你有一个包含多个图表的仪表板或报告,当多个图表指代同一组或实体时,匹配图表之间的颜色是一个好主意。如果图表之间的颜色发生变化,这可能会让读者更难理解图表。
利用颜色的意义
有时,你可以利用人们对颜色的感知来增强你的可视化效果。如果你绘制的组有固有的颜色惯例,例如体育队伍和政治团体,分配适当的颜色可以让读者更容易理解可视化内容。你甚至可以尝试以你品牌的颜色为基础创建自定义调色板。
一个通用的经验法则是避免使用过高的色彩饱和度和亮度,以减少视觉疲劳。这样做还可以为突出重要元素留出空间,通过让它们比其他元素看起来更醒目来实现。同样,灰色的作用也不容忽视,可以用它将不重要数据置于背景, 以及其他用途 。
最后,值得一提的是,不同的文化可能会将不同的含义与每种色调联系起来。例如,在一些西方文化中,红色可能与激情或危险相关联,但在一些东方文化中,它可能与繁荣和好运相关联。除非研究成果要向广大受众展示,否则这可能并不特别重要,但它是一个值得记住的工具,有助于使您的可视化更容易理解。
关注色盲问题
大约百分之四的人口有色盲,其中大多数是男性。最常见的色盲形式会导致红色和绿色某些色调的混淆,但也有色盲形式会导致蓝色和黄色色调看起来相同。出于这些原因,建议尝试通过改变除了色调以外的其他维度来表示与颜色相关的值,例如亮度和饱和度。您还可以使用 Coblis 等色盲模拟器 来了解您的最终可视化是否对他人来说是可理解的,以及是否存在潜在的歧义。
使用颜色的工具
在线有许多工具可以帮助你为数据可视化选择和测试颜色。这里我们将重点介绍一些最简单的工具,帮助你快速掌握颜色选择。
ColorBrewer
ColorBrewer 是颜色调板的传统参考,为每种类型提供多种不同的调板。某些调板可能在色盲安全方面存在问题,因此请务必检查颜色代码面板上方的眼睛图标,以确认某个颜色组合是否有较高的感知困难风险(分别用 ? 和 X 表示)。
Data Color Picker
数据颜色选择器是一个快速且易于使用的工具,用于生成顺序色板和发散色板。默认的“色板”选项卡最适合生成多色顺序色板,而不是定性色板,因为端点之间的插值必然会遗漏色轮中的一些色段。
Chroma.js Color Palette Helper
chroma.js 调色板助手比数据颜色选择器稍微复杂一些,因为它提供了校正亮度、使用贝塞尔插值以及稍微复杂的颜色值输入选项。然而,它也允许在算法尝试适配调色板时设置多个停靠点,从而提供一些额外的自由度。此外,该应用程序还在同一页面上包含了一个色盲模拟器,突出了最常见的缺陷类型,这些问题可能会出现。
Color Thief
生成定性调色板不像生成顺序调和发散调色板那样有许多便捷工具。 我想色相 和 Colorgorical 都是快速生成随机调色板的工具,但在你想自定义数值时,使用起来会稍微困难一些。
但创建定性调色板的一种有趣方法是借鉴具有吸引力的自然调色板图像和屏幕截图。有一些工具可以帮助你完成这件事,但 Color Thief 是最容易使用的工具之一,它能自动从上传的图片中提取出健康大小的调色板。这并不意味着你可以直接按顺序使用提取的颜色作为可视化调色板。虽然它们可以作为看起来搭配良好的颜色的灵感起点,但你可能需要做一些调整和修改,以确保你选择的颜色在可视化环境中是有效的。
Viz Palette
在上一节中,Coblis 被链接为一个资源,用于检查您的最终可视化效果对色觉缺陷人士可能呈现的样子。Viz Palette 是一个更广泛的颜色调色板工具,您可以在组合可视化之前使用它来检查您的调色板。除了能够在示例图和模拟色觉缺陷的背景下查看颜色集合外,您还可以立即修改和更改您的调色板颜色。