Конфигурация Seaborn скрывает по умолчанию matplotlib
Seaborn предоставляет несколько графических элементов, которые очень интересны для представления научных данных.
Таким образом, я начал использовать эту графику Seaborn, чередующуюся с другими настраиваемыми графиками matplotlib.
Проблема в том, что когда я это сделаю:
import seaborn as sb
Этот импорт, по-видимому, устанавливает графические параметры для морского судна по всему миру, а затем все графики matplotlib ниже импорта получают параметры морского обихода (они получают серый фон, изменения linewith и т.д. и т.д.).
В SO есть ответ, объясняющий, как создавать морские графики с конфигурацией matplotlib, но я хочу, чтобы параметры конфигурации matplotlib не изменялись при одновременном использовании обеих библиотек и в то же время иметь возможность производить, когда это необходимо, оригинальные морские участки.
Ответы
Ответ 1
Начиная с версии seaborn 0.8 (июль 2017 г.) стиль графика больше не изменяется при импорте:
Стиль [seaborn] по умолчанию больше не применяется при импорте seaborn. Теперь необходимо явно вызвать set()
или один или несколько из set_style()
, set_context()
и set_palette()
. Соответственно, модуль seaborn.apionly
устарел.
Вы можете выбрать стиль любого сюжета с помощью plt.style.use()
.
import matplotlib.pyplot as plt
import seaborn as sns
plt.style.use('seaborn') # switch to seaborn style
# plot code
# ...
plt.style.use('default') # switches back to matplotlib style
# plot code
# ...
# to see all available styles
print(plt.style.available)
Узнайте больше о plt.style()
.
Ответ 2
Если вы никогда не хотите использовать стиль seaborn
, но хотите некоторые из функций морского дна, вы можете импортировать морское судно, используя следующую строку (documentation):
import seaborn.apionly as sns
Если вы хотите создать некоторые сюжеты с стилем seaborn
, а некоторые без него, в том же script, вы можете отключить стиль seaborn
, используя seaborn.reset_orig
.
Кажется, что при выполнении импорта apionly
по умолчанию автоматически устанавливается reset_orig
при импорте, так что это зависит от вас, что наиболее полезно в вашем случае использования.
Здесь приведен пример переключения между matplotlib
по умолчанию и seaborn
:
import matplotlib.pyplot as plt
import matplotlib
import numpy as np
# a simple plot function we can reuse (taken from the seaborn tutorial)
def sinplot(flip=1):
x = np.linspace(0, 14, 100)
for i in range(1, 7):
plt.plot(x, np.sin(x + i * .5) * (7 - i) * flip)
sinplot()
# this will have the matplotlib defaults
plt.savefig('seaborn-off.png')
plt.clf()
# now import seaborn
import seaborn as sns
sinplot()
# this will have the seaborn style
plt.savefig('seaborn-on.png')
plt.clf()
# reset rc params to defaults
sns.reset_orig()
sinplot()
# this should look the same as the first plot (seaborn-off.png)
plt.savefig('seaborn-offagain.png')
который создает следующие три графика:
seaborn-off.png:
![seaborn-off]()
seaborn-on.png:
![seaborn-on]()
seaborn-offagain.png:
![введите описание изображения здесь]()
Ответ 3
Вы можете использовать функциональность matplotlib.style.context
, как описано в руководство по стилю.
#%matplotlib inline #if used in jupyter notebook
import matplotlib.pyplot as plt
import seaborn as sns
# 1st plot
with plt.style.context("seaborn-dark"):
fig, ax = plt.subplots()
ax.plot([1,2,3], label="First plot (seaborn-dark)")
# 2nd plot
with plt.style.context("default"):
fig, ax = plt.subplots()
ax.plot([3,2,1], label="Second plot (matplotlib default)")
# 3rd plot
with plt.style.context("seaborn-darkgrid"):
fig, ax = plt.subplots()
ax.plot([2,3,1], label="Third plot (seaborn-darkgrid)")
![введите описание изображения здесь]()
Ответ 4
Восстановить все RC-параметры до исходных настроек (соблюдение пользовательских rc) разрешено seaborn.reset_orig()
function
Ответ 5
Как объяснялось в этом другом вопросе, вы можете импортировать морское судно с помощью:
import seaborn.apionly as sns
И стили matplotlib не будут изменены.