Конфигурация 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 не будут изменены.