web-dev-qa-db-ja.com

python seabornはmatplotlibにリセットします

私はseabornバージョンo.4とmatplotlibバージョン1.42を使用しています。単純なプロットコマンドを使用して、線とマーカーの両方を表示するチャートがあります。

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

潜在的なバグ( https://github.com/mwaskom/seaborn/issues/344 )により、seabornをインポートした後、同じコードはマーカーなしの行のみを表示します。

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

だから私の質問は次のとおりです。Seabornをインポートした後、すべてのパラメータを元に戻す方法はありますか?

32
user3287545

はい、 seaborn.reset_orig

28
mwaskom

Seabornで頻繁に発生するMatplotlibの設定の副作用を更新するには:

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)
7
JoelBondurant

Seabornでスタイルを変更する前に、必要なrcParamsを保存できます(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)

almost all rcParamsをデフォルト値に復元します。異なるいくつかは簡単に見ることができます(これをJupyterノートブックで実行しました):

# 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
2
joelostblom

私の場合、rc属性を使用して変更したときに出力のプロットサイズをリセットするために検索していました。次のコードを使用してデフォルトサイズsns.reset_defaults()(snsはseabornです).

2
Eswar Chitirala