如何使用matplotlib / seaborn获得保持亮度的灰度调色板

时间:2018-05-18 16:21:25

标签: python matplotlib colors seaborn color-palette

我试图了解特定调色板在保持亮度的灰度(例如打印时)中的外观。我正在使用颜色defined safe for colorblind people生成调色板:

import matplotlib as mpl
import seaborn as sns

# http://mkweb.bcgsc.ca/colorblind
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))]

### how to convert this palette to grayscale?
cblind_gray =
###

pal = sns.color_palette(cblind)
sns.palplot(pal)

如何使用matplotlib / seaborn或其他python包进行此操作?

1 个答案:

答案 0 :(得分:0)

我解决了转换为HSV,将饱和度设置为0并重新转换回rgb:

# http://mkweb.bcgsc.ca/colorblind
rgbs = [(213/255, 94/255, 0/255), (86/255, 180/255, 233/255), (.9, .9, .9)]

cblind = [mpl.colors.to_hex(r) for r in rgbs]
cblind_gray = [mpl.colors.to_hex(
    mpl.colors.hsv_to_rgb(mpl.colors.rgb_to_hsv(r) * (1,0,1)))
    for r in rgbs]

pal = sns.color_palette(cblind)
sns.palplot(pal)

pal = sns.color_palette(cblind_gray)
sns.palplot(pal)

这是正确的方法吗?

更新

显然它不起作用(当放入灰度时第二种颜色不同 - 我用Color Oracle检查)。你知道这是什么原因以及如何解决它?