パンダのプロットが表示されない


81

これをスクリプト(IPythonではない)で使用すると、何も起こりません。つまり、プロットウィンドウが表示されません。

import numpy as np
import pandas as pd
ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000))
ts.plot()

を追加してtime.sleep(5)も何もありません。どうして?

matplotlibを手動で呼び出さずにそれを行う方法はありますか?


から出力がありts.plot()ますか?
itzy 2015

1
「手動でm​​atplotlibを呼び出す」とはどういう意味ですか?通常の方法はimport matplotlib.pyplot as pltplt.show()
maxymoo 2015

1
@itzy:の場合ts.plot()、プログラムはこの直後に終了します。追加してtime.sleep(10)も何も表示されません
Basj 2015

1
@maxymoo:.plot()パンダオブジェクトで実行するとすべてが処理されると思いました(つまり、パンダは私の代わりにmatplotlibジョブを実行します):この例を参照してください。
Basj 2015

回答:


159

プロットを作成したら、matplotlibにshowそのプロットを指示する必要があります。物事を行う通常の方法は、そこからインポートmatplotlib.pyplotして呼び出すshowことです。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000))
ts.plot()
plt.show()

そうしないように要求したので(なぜ?)、次を使用できます[注:これは新しいバージョンのpandas]では機能しなくなったようです。

import numpy as np
import pandas as pd
ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000))
ts.plot()
pd.tseries.plotting.pylab.show()

しかし、そこで行っmatplotlibているのはpandas、にインポートされた場所を見つけて、そこshowから同じ関数を呼び出すことだけです。

あなたはmatplotlib物事をスピードアップするために電話をかけないようにしていますか?もしそうなら、pandasすでにインポートしているので、あなたは本当に何もスピードアップしていませんpyplot

python -mtimeit -s 'import pandas as pd'
100000000 loops, best of 3: 0.0122 usec per loop

python -mtimeit -s 'import pandas as pd; import matplotlib.pyplot as plt'
100000000 loops, best of 3: 0.0125 usec per loop

最後に、コメントでリンクし例を呼び出す必要がないmatplotlib理由iPython notebookは、スクリプトではなく、でインタラクティブに実行されているためです。


?私は「padnas.tseries'は属性のプロットを持っていない取得「)(pd.tseries.plotting.pylab.show」を実行すると、それが古くなっているあなたは、書き込みをしたと2015年に...
セバスチャン・ニールセン

はい、matplotlibへのバックドアはもう存在しないようです。とにかく最初のオプションをお勧めします
tmdavison 2018

2
ありがとう。APIの設計はもっと良いかもしれないと思います。panda.plotを使用するためにmatplotlibについて知る必要があるのは奇妙です
Phil

5

使用matplotlib,しているにもかかわらず、iPythonノートブック(またはJupyter Lab)に表示されない場合matplotlibは、ノートブックでインラインオプションを設定することを忘れないでください。

import matplotlib.pyplot as plt

%matplotlib inline

その後、次のコードは問題なく動作します。

fig, ax = plt.subplots(figsize=(16,9));
change_per_ins.plot(ax=ax, kind='hist')

インラインオプションを設定しないと表示されずplt.show()、最後にを追加すると、出力が重複します。


0

私はちょうどしました

import matplotlib.pyplot as plt

%matplotlib inline

行を追加します

plt.show()

df.plot()の隣にあり、


1
挿入できるようにするために使用する環境を含めてください%matplotlib inline(これは、スクリプトで使用できる標準のPythonではありません)。
Basj

%matplotlib inline... ipython / jupyterノートブックで使用されている
Yatin

ええ、pycharmのようなIDEを使用している場合は、%matplotlibをインラインで追加する必要はありません(私はそれを使用しています)。
devSpartan

0

他の答えは、matplotlib.pyplotいくつかの2番目の関数を手動でインポートおよび/または呼び出すことを含みます。

代わりに、設定することができますmatplotlibにあるように、対話型モードのとコンフィギュレーションファイル

行を追加するだけです

interactive: True

matplotlibrc次のいずれかの場所で呼び出されたファイルに:

  • 現在の作業ディレクトリ内
  • によって指定されたプラットフォーム固有のユーザーディレクトリ内 matplotlib.get_configdir()
    • UNIXライクなシステムでは、通常 /home/username/.config/matplotlib/
    • Windowsの場合 C:\\Documents and Settings\\username\\.matplotlib\\
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.