2018年2月20日火曜日

matplotlibの図をPDFで出力する

matplotlibの図をPDFで出力するときの方法で2種類紹介します。

1枚の図をPDF出力するとき

1つの図をPDF出力するときは、単純に
plt.savefig("output.pdf")
とすればPDFが出力されます。同様にpngファイルを出力することも可能です。例は下のようになります。
import matplotlib.pyplot as plt

fig = plt.figure()
plt.plot([1,2,3,4,5],'o')
plt.title("test\n put some comment here")
plt.savefig("output.pdf")
plt.show()

複数ページはPdfPagesが便利

plt部分が画像として扱われるので、テキストをPDFに入れたいときは、plt.titleなどで図に埋め込むと簡単です。日本語を入れたいときはフォント設定の解説参照のこと。

図を1ページのPDFに出力する

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

fig = plt.figure()
plt.plot([1,2,3,4,5],'o')
plt.title("test\n put some comment here")
plt.show()

# set path
pp = PdfPages('pdf_test.pdf')

# save figure
pp.savefig(fig)

# close file
pp.close()
これで下図がpdfで出力されます。pp.close()を忘れるとPDFが開けなくなります。そういうときは、後からでもpp.close()コマンドを実行するとOKです。



https://matplotlib.org/api/backend_pdf_api.html

複数ページのPDFとして出力する


条件を変えて図を出力します。5回繰り返して、色を(C0〜C4)で変えます。
pp = PdfPages('pdf_test.pdf')
for i in range(5):
    fig = plt.figure()
    plt.plot([1,2,3,4,5],'o', color='C'+str(i))
    pp.savefig(fig)
  
pp.close()
こういう5ページのPDFが出力されたでしょうか?



ちなみに、fig単位ごとにPDF1枚ですので、subplotを使うと複数の図を1枚のPDFに出すこともできます。

0 件のコメント:

コメントを投稿