プロットを Matplotlib に PDF ファイルとして保存する方法

  1. プロットを PDF ファイルとして保存するための savefig() メソッド
  2. PdfPages クラスの savefig() メソッド

Matplotlib から生成されたプロットは、savefig() メソッドでファイル名の .pdf 拡張子を使用して PDF ファイルとして簡単に保存できます。複数のプロットを単一の PDF ファイルに保存するには、PdfPages クラスを使用します。

プロットを PDF ファイルとして保存するための savefig() メソッド

savefig() メソッドを使用して、プロットを Matplotlib の画像ファイルとして保存できます。

savefig() メソッドの構文:

matplotlib.pyplot.savefig(fname, 
        dpi=None, 
        facecolor='w', 
        edgecolor='w',
        orientation='portrait', 
        papertype=None, 
        format=None,
        transparent=False, 
        bbox_inches=None, 
        pad_inches=0.1,
        frameon=None, 
        metadata=None)

パラメータセクションの fname は、作業ディレクトリを基準にしたファイルの名前とパスを表します。ファイル名の拡張子として .pdf を使用すると、プロットは PDF ファイルとして保存されます。

import numpy as np
import matplotlib.pyplot as plt

x=np.linspace(0,5,50)
y=np.cos(2 * np.pi * x)

plt.scatter(x,y)
plt.plot(x,y)
plt.title("Plot of cosx")
plt.xlabel("x")
plt.ylabel("cosx")
plt.show()
plt.savefig("Save Plot as PDF file using savefig.pdf")

これにより、現在の作業ディレクトリに savefig.pdf を使用して PDF としてプロットを保存」というファイル名で生成されたプロットが保存されます。

PdfPages クラスの savefig() メソッド

複数のプロットを 1つにプロットしたい場合は、PdfPages クラスの savefig() メソッドを使用できます。

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.backends.backend_pdf import PdfPages

x=np.linspace(-3,3,100)
y1=np.sin(x)
y2=np.cos(x)
y3=1/(1+np.exp(-x))
y4=np.exp(x)

def retFig(x,y):
    fig = plt.figure()
    a= plt.plot(x,y)
    return fig

fig1 = retFig(x, y1)
fig2 = retFig(x, y2)
fig3 = retFig(x, y3)
fig4 = retFig(x, y4)

pp = PdfPages('Save multiple plots as PDF.pdf')
pp.savefig(fig1)
pp.savefig(fig2)
pp.savefig(fig3)
pp.savefig(fig4)
pp.close()

これにより、Matplotlib で生成された 4つの図が、現在の作業ディレクトリにファイル名 Save multiple plots as PDF.pdf で単一の PDF ファイルに保存されます。

ここでは、各プロットの図を返し、PdfPages クラスの savefig() メソッドで個々の図を渡すことにより、すべての図を 1つの PDF ファイルに保存します。

comments powered by Disqus