非常に単純なことを忘れていることは間違いありませんが、特定のプロットをSeabornで機能させることはできません。
私が行った場合:
import seaborn as sns
それから私がmatplotlibを使っていつものように作成するプロットは、Seabornスタイル(背景の灰色のグリッド)を取得します。
しかし、私が例の1つをやろうとすると:
In [1]: import seaborn as sns
In [2]: sns.set()
In [3]: df = sns.load_dataset('iris')
In [4]: sns.pairplot(df, hue='species', size=2.5)
Out[4]: <seaborn.axisgrid.PairGrid at 0x3e59150>
Pairplot関数はPairGridオブジェクトを返しますが、プロットは表示されません。
Matplotlibは正しく機能しているように見え、Seabornスタイルは他のmatplotlibプロットにも適用されるので少し混乱していますが、Seaborn関数は何もしないようです。誰が問題となる可能性があるかについて何か考えがありますか?
Seabornを使って作成したプロットは、通常のmatplotlibプロットのように表示する必要があります。これを使用して行うことができます
plt.show()
matplotlibからの関数です。
もともと私はseaborn(sns.plt.show()
)から既にインポートされたmatplotlibオブジェクトを使用するための解決策を投稿しました、しかしこれは悪い習慣であると考えられます。したがって、matplotlib.pyplotモジュールを直接インポートしてプロットを表示してください。
import matplotlib.pyplot as plt
plt.show()
IPythonノートブックが使用されている場合は、各プロットの後にshowを呼び出す必要をなくすためにインラインバックエンドを呼び出すことができます。それぞれの魔法は
%matplotlib inline
私はこの質問にかなり定期的に出くわします、そして私が検索したものを見つけるのにいつも時間がかかります:
import seaborn as sns
import matplotlib.pyplot as plt
plt.show() # <--- This is what you are looking for
注意してください:Python 2ではsns.plt.show()
を使うこともできますが、Python 3では使えません。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""Visualize C_0.99 for all languages except the 10 with most characters."""
import seaborn as sns
import matplotlib.pyplot as plt
l = [41, 44, 46, 46, 47, 47, 48, 48, 49, 51, 52, 53, 53, 53, 53, 55, 55, 55,
55, 56, 56, 56, 56, 56, 56, 57, 57, 57, 57, 57, 57, 57, 57, 58, 58, 58,
58, 59, 59, 59, 59, 59, 59, 59, 59, 60, 60, 60, 60, 60, 60, 60, 60, 61,
61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 62, 62, 62, 62, 62, 62, 62, 62,
62, 63, 63, 63, 63, 63, 63, 63, 63, 63, 64, 64, 64, 64, 64, 64, 64, 65,
65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 66, 66, 66, 66, 66, 66, 66,
67, 67, 67, 67, 67, 67, 67, 67, 68, 68, 68, 68, 68, 69, 69, 69, 70, 70,
70, 70, 71, 71, 71, 71, 71, 72, 72, 72, 72, 73, 73, 73, 73, 73, 73, 73,
74, 74, 74, 74, 74, 75, 75, 75, 76, 77, 77, 78, 78, 79, 79, 79, 79, 80,
80, 80, 80, 81, 81, 81, 81, 83, 84, 84, 85, 86, 86, 86, 86, 87, 87, 87,
87, 87, 88, 90, 90, 90, 90, 90, 90, 91, 91, 91, 91, 91, 91, 91, 91, 92,
92, 93, 93, 93, 94, 95, 95, 96, 98, 98, 99, 100, 102, 104, 105, 107, 108,
109, 110, 110, 113, 113, 115, 116, 118, 119, 121]
sns.distplot(l, kde=True, rug=False)
plt.show()
与える
混乱を避けるため(コメントに多少のコメントがあるようです)。あなたがJupyterにいると仮定します。
%matplotlib inline
>プロットを表示します _ _ ノートブック
sns.plt.show()
>はノートブックのプロット OUTSIDE を表示します
プロットが表示されるという意味で%matplotlib inline
は OVERRIDEsns.plt.show()
INsns.plt.show()
が呼び出されてもノートブックを表示します。
そして、はい、それはあなたの設定に行を含めるのは簡単です:
IPython Notebookで自動的に%matplotlibをインラインで実行します
しかし、実際のコードではインポートと一緒にしておくほうがよい慣習と思われます。
私のアドバイスはただ
plt.figure()
といくつかのSNSプロットを与える。例えば
sns.distplot(data)
。
それはそれがどんなプロットも表示しないように見えますが、あなたが図を最大化するとき、あなたはプロットを見ることができるでしょう。
Jupyterノートブックの代わりにIPython console(%matplotlib inline
を使うことはできません)でプロットし、plt.show()
を繰り返し実行したくない場合は、ipython --pylab
を使ってIPythonコンソールを起動できます。
$ ipython --pylab
Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.0.1 -- An enhanced Interactive Python. Type '?' for help.
Using matplotlib backend: Qt5Agg
In [1]: import seaborn as sns
In [2]: tips = sns.load_dataset("tips")
In [3]: sns.relplot(x="total_bill", y="tip", data=tips) # you can see the plot now
あなたのコードスニペットのスタイルから言うと、Jupyter NotebookではなくIPythonを使っていたと思います。
GitHubのこの issue では、2016年のIPythonのメンバーによって、チャートの表示が「Jupyterカーネルの場合にのみ機能する」場合にのみ機能することが明らかにされました。したがって、%matplotlib inline
は機能しません。
私はちょうど同じ問題を抱えていました、そして視覚化のためにあなたがJupyter Notebookを使うことを提案します。
これは私のために働きました
import matplotlib.pyplot as plt
import seaborn as sns
.
.
.
plt.show(sns)