Я экспериментировал с sns.set_style()
для ограничения избыточной установки атрибутов графика.
Проблема, с которой я сталкиваюсь, заключается в том, что я не могу найти, как получить доступ ко всем атрибутам, которые я хотел бы изменить, .eg цвет легенды.
См. ниже таблицу стилей и код печати:
import seaborn as sns
import numpy as np
dark_plot_no_tick = {
'axes.facecolor': '#181818',
'legend.facecolor': "white", # still inheriting from figure
'axes.edgecolor': '1',
'axes.grid': False,
'figure.facecolor': '#181818', # Works inline but not saving
'xtick.bottom': False, # still visible
'xtick.top': False,
'ytick.left': False, # still visible
'ytick.right': False,
'axes.spines.left': True,
'axes.spines.bottom': True,
'axes.spines.right': False,
'axes.spines.top': False
}
sns.set_style(rc=dark_plot_no_tick)
sns.set_palette(['#5FB7B2'])
fig, ax = plt.pyplot.subplots()
sns.kdeplot(np.random.normal(10, 10, 10_000), label="test", ax=ax)
fig.savefig("test.png");
Единственная проблема в том, что цвет легенды - либо прозрачен, либо наследуется, и я не могу понять, как чтобы изменить его в таблице стилей, которую я передаю set_style ().
Вот как это выглядит сейчас:
Неверно отформатированная легенда
И вот как бы я хотел, чтобы это выглядело:
Правильно отформатированная легенда
Редактировать:
Согласно предложению @ ImportanceOfBeingErnest, я попробовал ниже:
import matplotlib
matplotlib.rcParams["legend.facecolor"] = "white"
matplotlib.rcParams["xtick.bottom"] = False
matplotlib.rcParams["ytick.left"] = False
Использование rcParams
для изменения legend.facecolor
работает, пока не работает изменение xtick.bottom
и ytick.left
.
Тем не менее, я все равно предпочел бы изменить цвет лица, используя sns.set_style()
, а не matplotlib.rcParams
.
Кроме того, я реально удаление тиков не было частью первоначальной проблемы, но я включил ее здесь, так как полагаю, что эти две проблемы могут вызывать одну и ту же причину root.