Некоторые свойства dict в функции seaborn set_style не работают

#python #matplotlib #seaborn

#python #matplotlib #seaborn

Вопрос:

 X = np.arange(20)
y = np.log(X**2)

# set title in Chinese
plt.title('你好')

sns.set_style({'axes.facecolor':'red','font.sans-serif':['SimSun']})
sns.lineplot(X,y,color="blue")
  

Когда я впервые запускаю этот код в Jupyter, заголовок может отображаться правильно, это означает font.sans-serif , что свойство сработало хорошо, но backgroundcolor не красный.
Но когда я снова запускаю тот же код во второй раз, axes.facecolor свойство работает, backgroundcolor меняется на красный.
Это меня смущает, почему это произошло? И есть ли какое-либо другое подобное свойство?

Комментарии:

1. .set_style предназначен для использования в качестве глобального свойства. Обычно я выполняю их сразу после импорта, а не в середине моего рабочего кода. Выполняется в порядке, который я описал, этого не происходит.

Ответ №1:

Согласно руководству по настройке эстетики стиля seaborn, управление локальным стилем должно выполняться с помощью (например):

 with sns.axes_style("darkgrid"):
    sns.lineplot(X,y,color="blue")
  

Для глобальных настроек используйте sns.set_style(...) перед любым оператором построения графика, чтобы его можно было учитывать. Вот почему вы должны запустить его дважды в Jupyter, чтобы он вступил в силу. Лучшим решением может быть выделение ячейки для нее сразу после импорта.