代码可视化配色规范
概述
将本技能内置的配色规则应用到所有代码生成的图表、热图和统计图中。覆盖绘图库默认调色板,并为 Python、R 及其他绘图库显式输出 hex 颜色列表或连续色标对象。
强制规则
- 在任何代码可视化任务中,不要使用绘图库默认色板。
- 先判断颜色语义,再选择色板类型。
- 颜色数量必须与类别数、分箱数或图例层级数匹配。
- 若修改现有绘图代码,发现默认色板、随机颜色或来源不明的 hex 值,应改写为本技能规则生成的颜色。
- 若用户手动指定了新的颜色、色板名称、hex 列表、RGB 值或其他新的配色方案,则不使用本技能,直接遵从用户指定。
- 本技能只用于图表和数据可视化代码,不用于普通网页 UI 主题、按钮颜色或品牌主视觉设计,除非请求本身仍然是图表可视化。
图形语义到色板类型的映射
- 分类变量、分组柱状图、分组散点图、分组箱线图和离散图例,使用
离散性配色。 - 强度、表达量、密度、概率、单向递增热图等单方向连续变量,使用
连续性配色-单色系。 - log2 fold change、相关性、残差、上下调等以中点为参照的双向连续变量,使用
连续性配色-双色系。
色板优先级与数量规则
离散型
- 优先使用
离散性配色-1,其次使用离散性配色-2。 - 当
n <= 6时,取离散性配色-1的前n个颜色。 - 当
7 <= n <= 11时,先用完整的离散性配色-1,再按顺序补入离散性配色-2直到达到n个颜色。 - 当
n > 11时,以离散性配色-1 + 离散性配色-2组成的 11 个锚点色进行均匀插值。 - 当
n > 11时,必须提醒用户类别过多会降低颜色可辨识性,并建议合并类别、分面展示或增加形状、线型等辅助编码。
连续单色型
- 优先使用
连续性单色-2,其次为连续性单色-4、连续性单色-3、连续性单色-5。 - 连续色标直接使用完整且有序的色带。
- 分箱连续图从完整色带中等距抽样出
n个颜色。 - 不要打乱颜色顺序。
连续双色型
- 优先使用
连续性双色-5,其次为连续性双色-1、连续性双色-4、连续性双色-3。 - 连续双色色标直接使用完整且有序的色带。
- 对称分箱时按等距方式抽取颜色,并尽量保留中点附近的平滑过渡。
- 除非用户明确要求反转高低值语义,否则不要反转左右方向。
语言与绘图库适配规则
- 在 Python 中,离散色板优先输出显式的
list[str]hex 列表,连续色标优先使用LinearSegmentedColormap.from_list(...)。 - 在 R 中,离散色板优先输出显式的
c("#xxxxxx", ...)向量,连续色标优先使用scale_*_gradientn(colours = ...)或等效函数。 - 在
matplotlib、seaborn、plotly、ggplot2、ComplexHeatmap、altair、vega-lite等库中,必须显式传入本技能生成的调色板,不依赖默认主题色。
参考文件
- 具体色板、优先级、hex 顺序和数量规则见 references/palette-rules.md。
- Python 绘图示例见 references/python-visualization-examples.md。
- R 绘图示例见 references/r-visualization-examples.md。
输出要求
- 说明所选色板类型和具体色板名称。
- 说明需要多少个颜色,以及这些颜色是如何截取、补齐或插值得到的。
- 若离散类别过多并触发插值,应明确说明这一点。
- 除非用户要求展开解释,否则保持说明简洁。