Почему морское сияние затемняет цвета (делает их темнее, чем должно быть)? - PullRequest
0 голосов
/ 17 апреля 2020

Я пытаюсь создать графики в Python, используя несколько разных библиотек (bokeh, seaborn и matlotlib), но придерживаясь той же цветовой схемы. Я выбрал категорический паллет из боке с:
from bokeh.palettes import Category10 as palette
, а затем использовал его в seaborn и matplotlib. Моя проблема в том, что, хотя в matplotlib цвет кажется очень похожим на bokeh (как определено в палитре), seaborn показывает какие-то заметные более темные цвета, чем должно быть. Мне интересно, если он делает какое-то затемнение любой цветовой схемы по умолчанию, и есть ли способ избежать этого. Ниже приведен код для создания одного и того же барплота с использованием разных библиотек
Использование bokeh:

source = pd.DataFrame({'names': ['exp_1', 'exp_2'], 'data':[3, 5], 'color':palette[10][:2]})
p = bokeh.plotting.figure(x_range=['exp_1', 'exp_2'], y_range=(0,6), plot_height=500, title="test")
p.vbar(x='names', top='data', width=0.9,  legend_field="names", source=source, color='color')
p.xgrid.grid_line_color = None
p.legend.orientation = "horizontal"
p.legend.location = "top_center"
p.xaxis.major_label_text_font_size = '22pt'
p.yaxis.major_label_text_font_size = '22pt'
bokeh.io.show(p)

Использование matplotlib:

# same palette both for seaborn and matplotlib (taken from bokeh palette)
sns_palette=sns.color_palette(palette[10]) 
fig, ax = plt.subplots()
plt.style.use('seaborn')
ax.set_xlabel('experiment', fontsize=20)
ax.tick_params(axis='both', which='major', labelsize=22)
ax.set_xticks([0, 1])
ax.set_xticklabels(['exp_1', 'exp_2'], fontsize=18)
ax.bar([0, 1], source['data'], align='center', color=sns_palette[:2])

и используя bokeh:

plt.figure()
ax = sns.barplot(x="names", y="data", data=source, palette=sns_palette[0:2])
ax.set_xlabel('experiment', fontsize=20)
ax.tick_params(axis='both', which='major', labelsize=18)
plt.tight_layout()


боке барплот:
bokeh
matplotlib barplot
matplotlib
барборн морского побережья:
seaborn

...