首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PyFPDF将Matplotlib子图保存为PDF格式

使用PyFPDF将Matplotlib子图保存为PDF格式
EN

Stack Overflow用户
提问于 2022-05-20 10:46:15
回答 1查看 109关注 0票数 1

我试图创建两个图形和两个图在每个图形中,然后创建一个PDF文件中的一个数字。我想选择哪个数字将保存在PDF文件中。我有个简单的密码。这只是一个例子:

代码语言:javascript
复制
from fpdf import FPDF
from matplotlib import pyplot as plt
import tempfile
import io

# Examples
X = [0, 1, 2, 3, 4, 5, 6]
Y = [0, 1, 0, 1, 0, 1, 0]

X1 = [0, 1, 2, 3, 4, 6, 7, 8, 9, 10]
Y1 = [1, 4, 6, 4, 2, 12, 4, 6, 3, 12]

X2 = [0, 1, 2, 3, 4, 6, 7, 8, 9, 10]
Y2 = [1, 1, 1, 3, 6, 12, 18, 24, 30, 36]

X3 = [0, 1, 2, 3, 4, 6, 7, 8, 9, 10]
Y3 = [1, 30, 20, 30, 10, 30, 40, 40, 50, 20]


def plot(x,y, x1, y1):

    fig, (ax1, ax2) = plt.subplots(1, 2)
    ax1.plot(x, y)
    ax2.plot(x1, y1)

    return fig

def pdf_generator():

    fig = io.BytesIO()
    plt.savefig(fig, format="png")
    saved_fig = tempfile.NamedTemporaryFile()

    with open(f"{saved_fig.name}.png", 'wb') as sf:
        sf.write(fig.getvalue())

    pdf = FPDF('P', 'mm', 'A4')
    pdf.add_page(orientation='P', format='A4')
    pdf.set_xy(30, 50)
    pdf.image(fig, w=140, h=110)
    fig.close()

    return pdf.output('pdf_plot.pdf')

figA = plot(X1,Y1, X2,Y2)
figB = plot(X,Y, X3,Y3)

pdf_generator()

我创建了figAfigB。然而,总是被“转换”成PDF的数字是figB。我已经尝试创建一个pdf_generator函数,它将接受图形的名称作为参数,但是它没有工作。

有什么解决这个问题的建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-20 10:50:57

就快到了,您只需更改函数定义,将想要绘制的图作为参数,然后使用figure.savefig()而不是plt.savefig保存它

代码语言:javascript
复制
#...
def pdf_generator(figure):
    fig = io.BytesIO()
    figure.savefig(fig, format="png")
    #...

pdf_generator(figA)
pdf_generator(figB)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72317616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档