【Matplotlib】複数の図を1つのPDFファイルにまとめて保存する方法
Matplotlibで作成した複数の図(グラフ)を、1つのPDFファイルにまとめて保存する方法を解説します。PdfPagesクラスを利用すれば、複数ページ構成のPDFを簡単に生成でき、レポートや資料作成にも役立ちます。
手順
- 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。
- figure()メソッドで新しい図(fig1)を作成するか、既存の図をアクティブにします。
- plot()メソッドで1本目の折れ線を描画します。
- figure()メソッドでもう1つの図(fig2)を作成するか、既存の図をアクティブにします。
- plot()メソッドで2本目の折れ線を描画します。
- PDFファイル名を格納する変数filenameを定義します。
- 複数の図をPDFに保存するための関数save_multi_image()を定義します。
- ファイル名を引数としてsave_multi_image()を呼び出します。
- 新しいPdfPagesオブジェクトを作成します。
- plt.get_fignums()で、現在前開いている図の番号一覧を取得します。
- 取得した図を順番にPDFファイルへ保存していきます。
- 最後にPdfPagesオブジェクトを閉じて処理を完了します。
コード例
from matplotlib import pyplot as plt
from matplotlib.backends.backend_pdf import PdfPages
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
fig1 = plt.figure()
plt.plot([2, 1, 7, 1, 2], color='red', lw=5)
fig2 = plt.figure()
plt.plot([3, 5, 1, 5, 3], color='green', lw=5)
def save_multi_image(filename):
pp = PdfPages(filename)
fig_nums = plt.get_fignums()
figs = [plt.figure(n) for n in fig_nums]
for fig in figs:
fig.savefig(pp, format='pdf')
pp.close()
filename = "multi.pdf"
save_multi_image(filename)
実行結果

このコードを実行すると、プロジェクトディレクトリ内に「multi.pdf」というPDFファイルが生成され、次の2つのグラフがそれぞれ別のページとして保存されます。

ポイント解説
PdfPagesは、matplotlib.backends.backend_pdfモジュールで提供されているクラスで、複数ページのPDFを扱うために使用します。また、plt.get_fignums()は現在開いているすべての図の番号を返すため、この仕組みを利用することで「作成済みの全図を自動的にPDFへ書き出す」処理が実現できます。PDF内では1ページにつき1つの図が割り当てられます。
-
Matplotlibを使ってPythonで複数の図を横並びに描画する方法
Matplotlibで複数の図を並べて描画する手順 PythonのMatplotlibを使えば、subplot()メソッドを活用することで、複数の図を1つのウィンドウ内に横一列に並べて簡単に表示できます。ここでは、同じランダムデータを4種類のカラーマップで可視化する例を紹介します。 具体的には、以下の手順で実装します。 numpyを使ってランダムなデータ(5×5の行列)を作成します。 plt.subplot(nrows, ncols, index)で現在の図にサブプロットを追加します。今回は「nrows=1、ncols=4」のレイアウトで、index=1から順に配置していきます。 imsho
-
MatplotlibでiPythonノートブックの図をファイルとして保存する方法
iPythonノートブック上で作成した図(グラフ)を画像ファイルとして保存したい場合、Matplotlibの機能を使えば簡単に実現できます。ここでは、基本的な手順とサンプルコードを紹介します。 図をファイルに保存する手順 iPythonから図をファイルとして保存するには、以下の手順を実行します。 plt.figure() で新しい図を作成するか、既存の図をアクティブにします。 add_axes() メソッドを使って、図に axes(座標軸)を追加します。 プロットしたいデータ(リストなど)を plot() で描画します。 savefig() メソッドを使って、図をファイルとして保存します。