Как получить палитру в сохраняющей яркость оттенках серого с помощью matplotlib / seaborn - PullRequest
0 голосов
/ 18 мая 2018

Я пытаюсь понять, как будет выглядеть конкретная палитра в градациях серого, сохраняющих яркость (например, при печати).Я создаю палитру, используя цвета , определенные безопасными для дальтоников :

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 голосов
/ 18 мая 2018

Я решил преобразовать в 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)

Это правильный способ сделать это?

Обновление

Видимо, это не работает (второй цвет отличается, когда помещен в оттенки серого - я проверил с помощью Цвет Oracle ).Знаете ли вы, что было бы причиной этого и как это исправить?

...