You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Matplotlib/Seaborn生成保亮度的灰度调色板

把色盲友好调色板转换为保亮度灰度的方法

嘿,我来帮你搞定这个问题!要将你的色盲友好调色板转换成保亮度的灰度(适合打印场景),我们可以用Matplotlib的内置工具,或者手动基于光度学公式计算——这两种方法都能保证转换后的灰度保留原颜色的亮度层次,不会出现颜色变灰后区分度丢失的情况。

方法1:用Matplotlib的rgb_to_grayscale(推荐,简单高效)

Matplotlib提供了matplotlib.colors.rgb_to_grayscale函数,设置correct_lightness=True就能实现保亮度的转换。步骤如下:

  1. 先将你的HEX颜色转换为RGB数组(Matplotlib的函数需要浮点型RGB值,范围0-1);
  2. 调用rgb_to_grayscale完成转换;
  3. 再转回Seaborn能识别的调色板格式。

完整代码:

import matplotlib as mpl
import seaborn as sns

# 你的色盲友好调色板(HEX格式)
cblind = [mpl.colors.to_hex((213/255, 94/255, 0/255)),
          mpl.colors.to_hex((86/255, 180/255, 233/255)),
          mpl.colors.to_hex((.9, .9, .9))]

# 步骤1:将HEX转为RGB数组(每个元素是[R,G,B],0-1范围)
cblind_rgb = [mpl.colors.hex2color(hex_color) for hex_color in cblind]

# 步骤2:转换为保亮度灰度
cblind_gray_rgb = mpl.colors.rgb_to_grayscale(cblind_rgb, correct_lightness=True)

# 步骤3:转为Seaborn可用的调色板格式(如果需要HEX格式也可以转)
cblind_gray = sns.color_palette(cblind_gray_rgb)

# 对比原调色板和灰度调色板
sns.palplot(sns.color_palette(cblind))
sns.palplot(cblind_gray)

方法2:手动计算光度学亮度(更灵活,理解原理)

如果想自己控制转换逻辑,我们可以用人眼感知亮度的加权公式:
Y = 0.2126*R + 0.7152*G + 0.0722*B
这个公式是国际标准,因为人眼对绿色的亮度感知最强,红色次之,蓝色最弱,用它计算的灰度能完美保留原颜色的亮度层次。

代码实现:

import matplotlib as mpl
import seaborn as sns

cblind = [mpl.colors.to_hex((213/255, 94/255, 0/255)),
          mpl.colors.to_hex((86/255, 180/255, 233/255)),
          mpl.colors.to_hex((.9, .9, .9))]

# 手动计算保亮度灰度
def rgb_to_luminance_gray(rgb_color):
    r, g, b = rgb_color
    luminance = 0.2126 * r + 0.7152 * g + 0.0722 * b
    # 返回灰度的RGB值(R=G=B=luminance)
    return (luminance, luminance, luminance)

cblind_rgb = [mpl.colors.hex2color(hex_color) for hex_color in cblind]
cblind_gray = [rgb_to_luminance_gray(rgb) for rgb in cblind_rgb]

# 绘图展示
sns.palplot(sns.color_palette(cblind))
sns.palplot(sns.color_palette(cblind_gray))

为什么要“保亮度”?

普通的灰度转换(比如直接取RGB平均值)会破坏原颜色的亮度对比,导致打印后不同颜色的灰度块区分度降低。而我们用的两种方法都基于人眼的亮度感知,能保证原调色板的视觉层次在灰度模式下依然清晰——这对色盲友好调色板来说尤其重要,因为它本来就是为了保证区分度设计的。

内容的提问来源于stack exchange,提问作者gc5

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:32:44