Pandasのグラフ保存#

公開日

参考

Pandasを使わずMatplotlib単体でグラフを出力して保存する場合、Matplotlib グラフの保存を参照ください。

PandasのSeries, DataFrameで出力したグラフを保存する方法として、以下の2つを解説します。

最初の方法を推奨しますので、2番目の方法は読み飛ばして頂いて結構です。

Matplotlibと連携#

Matplotlibと連携してPandasのグラフを保存する方法(推奨)を解説します。 以下のようにMatplotlibのplt.subplots()でグラフを作成し、戻り値のax (Axesオブジェクト) 取得します。 このaxplot()メソッドのax引数に与えて、MatplotlibとPandasのグラフを連携させます。 その後、fig.savefig()の引数に保存するファイル名を指定します。 fig.savefig()のオプションについては、Matplotlib グラフの保存 を参照ください。

なお、グラフを表示させたくない場合はplt.show()の代わりにplt.clsoe()を実行します。

import pandas as pd
import matplotlib.pyplot as plt

sr = pd.Series([1, 3, 2], index=[0, 10, 20])

fig, ax = plt.subplots()
sr.plot(ax=ax)
fig.savefig("pandas_figure1.png")
plt.show()
../_images/31fc18217583c0283da184f836616a018a69bfdeb5cbbb58035f9c51d4d133ed.png

plotメソッドの戻り値を使用#

この方法は、plot()メソッドの戻り値がAxesオブジェクトであることを利用します。 以下のように戻り値axfigure.savefig()メソッドに保存するファイル名を与えて実行します。

この方法は簡単に書ける利点がありますが、欠点もあります。 複数のSeriesやDataFrameのplot()メソッドを連続して実行すると、前のデータが後のグラフにも描画されてしまいます。 そのため、前述のMatplotlibと連携する方法を推奨します。

ax = sr.plot()
ax.figure.savefig("pandas_figure1.png")
../_images/31fc18217583c0283da184f836616a018a69bfdeb5cbbb58035f9c51d4d133ed.png

なお、axはMatplotlibのAxesオブジェクト、ax.figureFigureオブジェクトです。

print(type(ax))
print(type(ax.figure))
<class 'matplotlib.axes._axes.Axes'>
<class 'matplotlib.figure.Figure'>