pandas.Seriesヒストグラムプロットをファイルに保存します


86

ipython Notebookで、最初にpandas Seriesオブジェクトを作成し、次にインスタンスメソッド.hist()を呼び出すことにより、ブラウザーに図が表示されます。

この図をファイルに保存する方法を知りたいです(右クリックして名前を付けて保存するのではなく、スクリプトで必要なコマンドを意味します)。

回答:


174

次のFigure.savefig()ような方法を使用します。

ax = s.hist()  # s is an instance of Series
fig = ax.get_figure()
fig.savefig('/path/to/figure.pdf')

で終わる必要はありませんpdf、多くのオプションがあります。ドキュメントをチェックしください

または、pyplotインターフェイスを使用savefigし、関数としてを呼び出すだけで、最後に作成した図を保存できます。

import matplotlib.pyplot as plt
s.hist()
plt.savefig('path/to/figure.pdf')  # saves the current figure

7
このエラーが発生AttributeError: 'numpy.ndarray' object has no attribute 'get_figure'した場合は、複数の列をプロットしている可能性がありますs.hist(columns=['colA', 'colB'])。この場合、axはすべての軸の配列になります。ax[0].get_figure()またはax[0][0].get_figure()
toto_tico 2018年

1
2つのプロットを繰り返し保存しています。しかし、それは最初のプロットを上書きし、2番目は2つのプロットの合計のように見えます。誰かがこの問題を解決する方法を知っていますか?
Capan 2018年

1
@bukowski追加import matplotlib.pyplot as pltおよびplt.close()
acumenus 2018年

ループと複数の図を実行している場合はfig.clf()、図をクリアするために実行できます。
tommy.carstensen

7

あなたが使用することができますax.figure.savefig()

import pandas as pd

s = pd.Series([0, 1])
ax = s.plot.hist()
ax.figure.savefig('demo-file.pdf')

これはax.get_figure().savefig()、Philip Cloudの回答で示唆されているように、実用的なメリットはないため、最も美的に満足できるオプションを選択できます。実際、get_figure()単に次を返しますself.figure

# Source from snippet linked above
def get_figure(self):
    """Return the `.Figure` instance the artist belongs to."""
    return self.figure
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.