python seaborn для возврата к matplotlib

Я использую версию o.4 seaborn и версию 1.42 matplotlib. У меня есть диаграмма, отображающая как линию, так и маркер с помощью простой команды построения, например.

plt.plot([1,5,3,8,4],'-bo');

Из-за потенциальной ошибки (https://github.com/mwaskom/seaborn/issues/344) после import seaborn, тот же код показывает только строку без маркера.

import seaborn as sb 
plt.plot([1,5,3,8,4],'-bo');

So my question is: after import seaborn, Is there a way to reset all the parameters back to original?


person user3287545    schedule 13.11.2014    source источник


Ответы (7)


Да, позвоните в seaborn.reset_orig.

person mwaskom    schedule 13.11.2014
comment
Этот вид работает, но графики, созданные после import seaborn и seaborn.reset_orig(), по-прежнему выглядят совсем иначе, чем графики, созданные до этих строк. Есть ли способ избавиться от всех эффектов морского дна, как если бы он никогда не импортировался? - person user2428107; 11.10.2015

Ни одно из этих решений не помогло мне (Python 3.x, Jupyter). Что сработало, так это matplotlib.rc_file_defaults()

См. Документацию здесь: https://matplotlib.org/3.1.1/api/matplotlib_configuration_api.html#matplotlib.rc_file_defaults

person Marcelo Modesto    schedule 15.10.2019
comment
Это решение сработало у меня с Python 3. seaborn.reset_orig не сработало. - person Mead; 15.01.2021
comment
Теперь правильная ссылка - matplotlib.org/stable/api/. - person Ilya; 27.04.2021

Чтобы обновить побочные эффекты конфигурации Matplotlib, часто встречающиеся в Seaborn:

import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns

Запустите это:

import importlib
importlib.reload(mpl); importlib.reload(plt); importlib.reload(sns)

Для старого кода Python2:

import imp
imp.reload(mpl); imp.reload(plt); imp.reload(sns)

Примечание. Ни одно из следующих действий не восстанавливает правильно состояние matplotlib:

  • sns.reset_orig ()
  • sns.reset_defaults ()
  • mpl.rcParams.update (mpl.rcParamsDefault)
person JoelBondurant    schedule 19.08.2016
comment
Importlib импортирует нормально, но когда я пытаюсь использовать reload, я получаю AttributeError: 'module' object has no attribute 'reload'. Это доступно только в Python 3.x? - person lanery; 30.08.2016
comment
doh, обновлено для Python 2: import imp; imp.reload (somemodule) - person JoelBondurant; 31.08.2016
comment
Для тех, кто читает это в ближайшем будущем: я пробовал это с несколькими разными версиями matplotlib и seaborn внутри Jupyter и не смог заставить его работать, я не думаю, что это общее решение (может быть, это было раньше). - person Peter; 21.02.2019

В моем случае я пытался сбросить размеры графика вывода, в частности, когда я изменил использование атрибута rc, использовал следующий код для сброса до размера по умолчанию sns.reset_defaults() (где sns - seaborn).

person Eswar Chitirala    schedule 24.06.2019

Вы можете сохранить нужный rcParams перед изменением стиля с помощью seaborn (обратите внимание, что seaborn больше не меняет rcParams при импорте):

import matplotlib as mpl

my_params = mpl.rcParams

# apply some change to the rcparams here

mpl.rcParams.update(my_params)

Обратите внимание, что оба эти

mpl.rcParams.update(mpl.rcParamsOrig)
mpl.rcParams.update(mpl.rcParamsDefault)

восстанавливает почти все rcParams до значений по умолчанию. Те немногие, которые будут отличаться, можно легко просмотреть (я запустил это в Jupyter Notebook):

# Differences between current params and `Default`
for key in mpl.rcParamsDefault:
    if not mpl.rcParamsDefault[key] == mpl.rcParams[key]:
        print(key, mpl.rcParamsDefault[key], mpl.rcParams[key])

## backend agg module://ipykernel.pylab.backend_inline
## figure.dpi 100.0 72.0
## figure.edgecolor w (1, 1, 1, 0)
## figure.facecolor w (1, 1, 1, 0)
## figure.figsize [6.4, 4.8] [6.0, 4.0]
## figure.subplot.bottom 0.11 0.125

и

# Differences between `Default` and `Orig`
for key in mpl.rcParamsDefault:
    if not mpl.rcParamsDefault[key] == mpl.rcParamsOrig[key]:
        print(key, mpl.rcParamsDefault[key], mpl.rcParamsOrig[key])

## backend agg Qt5Agg
person joelostblom    schedule 18.10.2017

Вы можете вернуть их к значениям по умолчанию, выполнив:

import matplotlib as mpl
mpl.rcParams.update(mpl.rcParamsDefault)

Также ознакомьтесь с этим сообщением от Джейка Вандерпласа, чтобы узнать больше о настройка matplotlib.

Надеюсь, поможет!

person Franco D'Angelo    schedule 15.05.2020

Можно просто вызвать функцию seaborn.set() без параметров функции, см. [seaborn tutorial][1].

person tagoma    schedule 09.10.2016
comment
Это ничего не делает - person colllin; 03.03.2018
comment
Решение, которое я предоставил выше, работало в то время, когда я ответил. Нет необходимости голосовать за меня. - person tagoma; 03.08.2019