web-dev-qa-db-ja.com

PdfPagesでテキストを追加します-matplotlib

公式ドキュメントのこれ に続いて、私は別のページに必要なプロットを含むpdfファイルを作成できます。しかし、(プロット内ではなく)ページにテキストを追加したいのですが、この方法で試しましたが成功しませんでした。

with PdfPages('multipage_pdf.pdf') as pdf:
    fig = plt.figure(figsize=(11.69,8.27))
    x = df1.index
    y1 = df1[col1]
    y2 = df1[col2]
    plt.plot(x, y1, label=col1)
    plt.plot(x, y2, label=col2)
    plt.legend(loc='best')
    plt.grid(True)
    plt.title('Title')
    txt = 'this is an example'
    plt.text(1,1,txt)
    pdf.savefig()
    plt.close()

テキストも表示するにはどうすればよいですかthis is an example?テキストのみの最初のページも作成できますか?前もって感謝します

6
Joe

テキスト'this is an example'は、データ座標の位置(1,1)に配置されます。データ範囲が異なる場合は、プロットから外れている可能性があります。図の座標で指定するのは理にかなっています。これらの範囲は0から1で、0,0は左下隅、1,1は右上隅です。例えば。

plt.text(0.05,0.95,txt, transform=fig.transFigure, size=24)

この例

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

with PdfPages('multipage_pdf.pdf') as pdf:
    fig = plt.figure(figsize=(11.69,8.27))
    plt.plot([1,2,3], [1,3,2], label="col1")
    plt.plot([1,2,3],  [2,1,3], label="col2")
    plt.legend(loc='best')
    plt.grid(True)
    plt.title('Title')
    txt = 'this is an example'
    plt.text(0.05,0.95,txt, transform=fig.transFigure, size=24)
    pdf.savefig()
    plt.close()

このプロットを作成します

enter image description here

空のPDFページを作成することはできません。ただし、もちろん、コンテンツのない図や、テキストだけの空の図を作成することで、模倣することができます。

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

with PdfPages('multipage_pdf.pdf') as pdf:
    firstPage = plt.figure(figsize=(11.69,8.27))
    firstPage.clf()
    txt = 'This is the title page'
    firstPage.text(0.5,0.5,txt, transform=firstPage.transFigure, size=24, ha="center")
    pdf.savefig()
    plt.close()

    fig = plt.figure(figsize=(11.69,8.27))
    plt.plot([1,2,3], [1,3,2], label="col1")
    plt.plot([1,2,3],  [2,1,3], label="col2")
    plt.legend(loc='best')
    plt.grid(True)
    plt.title('Title')
    txt = 'this is an example'
    plt.text(0.05,0.95,txt, transform=fig.transFigure, size=24)
    pdf.savefig()
    plt.close()

enter image description here