3. 色彩选择误区:别让你的图表变成“彩虹炸弹”
好,咱们来聊聊色彩。在丰度图表里,颜色是传递信息的核心载体。可偏偏这块,是翻车重灾区。我见过太多图表,明明数据不错,结果颜色用得乱七八糟——读者第一眼就被晃晕了,哪还有心思看数据?
说白了,色彩选择就三个高频坑:颜色太多、不考虑色盲用户、颜色映射违背数据逻辑。咱们一个一个拆。
3.1 误区一:滥用过多颜色
先看个场景:
- 一张热图里塞了20多种颜色。
- 堆叠柱状图用了8种颜色,相邻色根本分不清。
- 散点图每个类别一种颜色,图例比数据还长。
为什么会这样?很多同学觉得颜色多显得“丰富”、“专业”。但人的视觉短期记忆其实很有限——一般人的色觉区分能力,在图表里能有效记住5-7种颜色,再多就是认知负担了。
我的建议:
- 丰度图表(热图、聚类图、堆叠图)尽量控制在5-7种颜色内。
- 如果数据类别超过7个,考虑分组或使用层次化颜色(比如一个大类用一种色系,内部用渐变)。
- 别用彩虹色映射连续数据——那是公认的“视觉噪音”。
我在项目中遇到过一位生物信息学同学,做物种丰度堆叠图,用了16种颜色。我说你分得清第11种和第12种吗?他自己盯着看了十秒,说“嗯,好像差不多”。后来我让他把低于2%丰度的归成“Other”,颜色直接降到6种。图片瞬间清爽了。
3.2 误区二:完全不考虑色盲用户
色盲不是小概率事件。全球约8%的男性和0.5%的女性有某种程度的色觉障碍。你现在做的图表,很可能就是给这群人看的。
最常见的色盲类型是红绿色盲。所以你用红绿配色区分两类数据时——比如高表达vs低表达——在色盲用户眼里,可能就是一片灰雾,毫无对比度。
| 色盲类型 | 常见混淆色 | 图表中容易出问题的搭配 |
|---|---|---|
| 红色盲 / 绿色盲 | 红 ↔ 绿 | 红绿渐变、红绿散点分类 |
| 蓝黄色盲 | 蓝 ↔ 黄 | 蓝黄填充、蓝黄线型 |
| 全色盲(罕见) | 所有颜色 | 依赖颜色区分的所有图表 |
避坑指南:
我建议你养成两个习惯:
- 用形状/线条样式辅助颜色。比如在散点图里,不同类别不但用不同颜色,还可以用不同形状(圆、三角、方块)。你想想看,即使色盲用户看不见颜色差异,也能通过形状区分。
- 使用色盲友好的调色板。我个人习惯用 Viridis、Magma、ColorBrewer 这类的色彩方案。它们从深到浅的亮度变化明显,颜色之间对比度也足够。
我曾经修复过一个临床基因表达图表,原作者用红色表示“上调”、绿色表示“下调”。一位审稿人反馈色盲实验室的同学完全读不懂。后来我把红绿改成蓝橙,并加上“+”和“−”符号标注,问题直接解决。嗯,有时改个配色就能挽救一个项目。
3.3 误区三:颜色映射与数据特性不连续
这个坑有点隐蔽。咱们先说什么是“颜色映射不连续”:
- 你把连续递增的数据(比如丰度从0到100),硬套上一个跳变的颜色序列。比如0-10用蓝色、10-20直接跳到红色、20-30又变成绿色。数据明明连续,颜色却像“台阶”。
- 或者你用了不均匀的颜色步长,比如0-50用一种色,50-55用一种完全不同的色,55-100又变回原来的色系。读者会产生错觉:那几个数值之间好像有巨大差异,其实没有。
正确的做法是什么?
技巧:
连续数据一定要用连续渐变的色带。比如从浅蓝到深蓝,或者从浅黄到橙红。人眼对这种亮度递增的渐变非常敏感,不容易产生误解。
如果你非要分段设色,至少保证色相变化方向与数据大小方向一致,且步长尽量均匀。可以用分位数或等距区间来做颜色断点,不要拍脑袋设阈值。
举个例子,之前在检查一个微生物组相对丰度热图时,数据从0.01%到35%,原作者手动设了5个颜色断点:0-0.1%(蓝)、0.1-1%(红)、1-5%(绿)、5-15%(紫)、15-35%(橙)。你看看这个跳变:蓝到红、红到绿、绿到紫、紫到橙——完全看不出丰度从低到高的趋势。我改成了Viridis的连续渐变,色彩随丰度自然变亮,一目了然。
3.4 一张图总结色彩选择的核心关系
下面这张SVG图梳理了色彩选择的三个误区与对应的解决路径,看一眼就清楚了。
3.5 实操排查清单
每做一个丰度图表,建议自己跑一遍这个清单:
- 数颜色数量:是否有超过7种不同色相?
- 检查红绿对比:有没有红绿并排?如果有,换成蓝橙或紫黄。
- 模拟色盲视图:用 Photoshop 或在线工具(比如 Color Oracle)模拟红绿色盲视图,看看关键信息是否丢失。
- 查看颜色映射函数:如果是连续数据,检查色带是否在亮度上单调递增/递减?有没有突兀的色相跳跃?
- 检查图例可读性:图例的颜色顺序是否与数据趋势顺序一致?
一句话记住:
颜色不是装饰品,是数据的一部分。选对颜色,你的图表才算真正开始工作。