Установите пользовательскую цветовую палитру Seaborn, используя шестнадцатеричные коды, и назовите цвета - PullRequest
0 голосов
/ 04 октября 2018

У моей компании есть формальная цветовая палитра, поэтому мне нужно использовать эти цвета в моих схемах морского происхождения.Поэтому я хотел бы установить цветовую палитру seaborn по умолчанию и дать этим цветам простые в использовании названия, такие как «p» для фиолетового и «g» для зеленого.

Вот что у меня есть для кода:

# Required libraries
import matplotlib.pyplot as plt
import seaborn as sns

# Wanted palette details
enmax_palette = ["#808282", "#C2CD23", "#918BC3"]
color_codes_wanted = ['grey', 'green', 'purple']

# Set the palette
sns.set_palette(palette=enmax_palette)

# Assign simple color codes to the palette

Пожалуйста, помогите мне назначить простые имена для цветов, используя мой список "color_codes_wanted".

1 Ответ

0 голосов
/ 05 октября 2018

Использовать пользовательскую функцию

В качестве комментария вы можете создать функцию, которая при вызове с пользовательским именем цвета возвращает шестнадцатеричный цвет из списка.

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

# Wanted palette details
enmax_palette = ["#808282", "#C2CD23", "#918BC3"]
color_codes_wanted = ['grey', 'green', 'purple']

c = lambda x: enmax_palette[color_codes_wanted.index(x)]

x=np.random.randn(100)
g = sns.distplot(x, color=c("green"))

plt.show()

Используйте нотацию C {n}.

Следует отметить, что все цвета морской волны - цвета matplotlib.Одна из опций, которую предоставляет matplotlib, - это так называемая нотация C {n} (с n = 0..9).Указывая строку типа «C1», вы указываете matplotlib использовать второй цвет из текущего цветового цикла.sns.set_palette устанавливает цветовой цикл для ваших пользовательских цветов.Так что, если вы можете запомнить их порядок в цикле, вы можете использовать эту информацию и просто указать "C1" для второго цвета.

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

# Wanted palette details
enmax_palette = ["#808282", "#C2CD23", "#918BC3"]

sns.set_palette(palette=enmax_palette)

x=np.random.randn(100)
g = sns.distplot(x, color="C1")

plt.show()

Манипулировать словарем цветов matplotlib.

Все именованные цветахранятся в словаре, к которому вы можете получить доступ через

matplotlib.colors.get_named_colors_mapping()

Вы можете обновить этот словарь, используя ваши собственные имена и цвета.Обратите внимание, что это заменит существующие цвета с тем же именем.

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import colors as mcolors
import seaborn as sns

# Wanted palette details
enmax_palette = ["#808282", "#C2CD23", "#918BC3"]
color_codes_wanted = ['grey', 'green', 'purple']
cdict = dict(zip(color_codes_wanted, [mcolors.to_rgba(c) for c in enmax_palette]))

mcolors.get_named_colors_mapping().update(cdict)
x=np.random.randn(100)
g = sns.distplot(x, color="green")

plt.show()

Все коды, показанные здесь, приведут к одному и тому же графику в «зеленом» цвете компании:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...