Python
 Computer >> コンピューター >  >> プログラミング >> Python

【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)

実行結果

【Matplotlib】複数の図を1つのPDFファイルにまとめて保存する方法

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

【Matplotlib】複数の図を1つのPDFファイルにまとめて保存する方法

ポイント解説

PdfPagesは、matplotlib.backends.backend_pdfモジュールで提供されているクラスで、複数ページのPDFを扱うために使用します。また、plt.get_fignums()は現在開いているすべての図の番号を返すため、この仕組みを利用することで「作成済みの全図を自動的にPDFへ書き出す」処理が実現できます。PDF内では1ページにつき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

  2. MatplotlibでiPythonノートブックの図をファイルとして保存する方法

    iPythonノートブック上で作成した図(グラフ)を画像ファイルとして保存したい場合、Matplotlibの機能を使えば簡単に実現できます。ここでは、基本的な手順とサンプルコードを紹介します。 図をファイルに保存する手順 iPythonから図をファイルとして保存するには、以下の手順を実行します。 plt.figure() で新しい図を作成するか、既存の図をアクティブにします。 add_axes() メソッドを使って、図に axes(座標軸)を追加します。 プロットしたいデータ(リストなど)を plot() で描画します。 savefig() メソッドを使って、図をファイルとして保存します。