我试图了解特定调色板在保持亮度的灰度(例如打印时)中的外观。我正在使用颜色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包进行此操作?
答案 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检查)。你知道这是什么原因以及如何解决它?