1. ホーム
  2. python

[解決済み] シーボーンプロットでsns.setを使用する場合

2022-02-03 17:16:02

質問

明確な回答を探したのですが、なかなか見つからず、以前にも質問されていたら申し訳ありません。seaborn 0.6とmatplotlib 1.4.3を使っています。ipythonのノートブックでたくさんの図を作っているので、一時的にプロットのスタイルを変更したいのですが、可能でしょうか?

具体的には、この例では、フォントサイズと背景スタイルの両方をプロットごとに変更したいのです。

これは私が探しているプロットを作成しますが、パラメータはグローバルに定義します。

import seaborn as sns
import numpy as np

x = np.random.normal(size=100)

sns.set(style="whitegrid", font_scale=1.5)
sns.kdeplot(x, shade=True);

しかし、これは失敗です。

with sns.set(style="whitegrid", font_scale=1.5):
    sns.kdeplot(x, shade=True);

を使っています。

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-10-70c5b03f9aa8> in <module>()
----> 1 with sns.set(style="whitegrid", font_scale=1.5):
      2     sns.kdeplot(x, shade=True);

AttributeError: __exit__

もやってみた。

with sns.axes_style(style="whitegrid", rc={'font.size':10}):
    sns.kdeplot(x, shade=True);

しかし、フォントのサイズは変更されません。何かご助言があれば、ぜひお願いします。

解決方法を教えてください。

Pythonでは、コンテキストマネージャーをスタックすることができます。

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt  
x = np.random.normal(size=100)
with sns.axes_style("whitegrid"), sns.plotting_context("notebook", font_scale=1.5):
    sns.kdeplot(x, shade=True)