Pandasのグラフ保存#
※記事内に商品プロモーションを含むことがあります。
公開日
参考
Pandasを使わずMatplotlib単体でグラフを出力して保存する場合、Matplotlib グラフの保存を参照ください。
PandasのSeries, DataFrameで出力したグラフを保存する方法として、以下の2つを解説します。
最初の方法を推奨しますので、2番目の方法は読み飛ばして頂いて結構です。
Matplotlibと連携#
Matplotlibと連携してPandasのグラフを保存する方法(推奨)を解説します。
以下のようにMatplotlibのplt.subplots()でグラフを作成し、戻り値のax (Axesオブジェクト) 取得します。
このaxをplot()メソッドの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()
plotメソッドの戻り値を使用#
この方法は、plot()メソッドの戻り値がAxesオブジェクトであることを利用します。
以下のように戻り値axのfigure.savefig()メソッドに保存するファイル名を与えて実行します。
この方法は簡単に書ける利点がありますが、欠点もあります。
複数のSeriesやDataFrameのplot()メソッドを連続して実行すると、前のデータが後のグラフにも描画されてしまいます。
そのため、前述のMatplotlibと連携する方法を推奨します。
ax = sr.plot()
ax.figure.savefig("pandas_figure1.png")
なお、axはMatplotlibのAxesオブジェクト、ax.figureはFigureオブジェクトです。
print(type(ax))
print(type(ax.figure))
<class 'matplotlib.axes._axes.Axes'>
<class 'matplotlib.figure.Figure'>