简介
在本实验中,你将学习如何使用 Python Matplotlib 创建一个多页 PDF 文件。该 PDF 文件将包含几页不同的图表和元数据。你还将学习如何为 PDF 文件添加注释。
虚拟机使用提示
虚拟机启动完成后,点击左上角切换到“笔记本”标签,以访问 Jupyter Notebook 进行练习。
有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。
如果你在学习过程中遇到问题,请随时向 Labby 提问。课程结束后提供反馈,我们将立即为你解决问题。
导入库
首先,你需要导入创建 PDF 文件所需的库。在本实验中,我们将使用 Matplotlib 和 datetime 库。
import datetime
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.backends.backend_pdf import PdfPages
创建 PdfPages 对象
接下来,你需要创建一个 PdfPages 对象,用于保存 PDF 文件的各个页面。你可以使用 with 语句来确保即使发生异常,PdfPages 对象也会在代码块结束时正确关闭。
with PdfPages('multipage_pdf.pdf') as pdf:
创建第一页
在这一步中,你将创建 PDF 文件的第一页。该页面将包含一个简单图形的图表。
plt.figure(figsize=(3, 3))
plt.plot(range(7), [3, 1, 4, 1, 5, 9, 2], 'r-o')
plt.title('Page One')
pdf.savefig()
plt.close()
创建第二页
在这一步中,你将创建 PDF 文件的第二页。该页面将包含一个正弦波的图表。
plt.rcParams['text.usetex'] = True
plt.figure(figsize=(8, 6))
x = np.arange(0, 5, 0.1)
plt.plot(x, np.sin(x), 'b-')
plt.title('Page Two')
pdf.attach_note("plot of sin(x)") ## attach metadata (as pdf note) to page
pdf.savefig()
plt.close()
创建第三页
在这一步中,你将创建 PDF 文件的第三页。该页面将包含一条抛物线的图表。
plt.rcParams['text.usetex'] = False
fig = plt.figure(figsize=(4, 5))
plt.plot(x, x ** 2, 'ko')
plt.title('Page Three')
pdf.savefig(fig) ## 或者你可以将一个 Figure 对象传递给 pdf.savefig
plt.close()
设置 PDF 文件的元数据
在这一步中,你将设置 PDF 文件的元数据。你可以设置 PDF 文件的标题、作者、主题、关键词以及创建/修改日期。
d = pdf.infodict()
d['Title'] = 'Multipage PDF Example'
d['Author'] = 'Jouni K. Seppänen'
d['Subject'] = 'How to create a multipage pdf file and set its metadata'
d['Keywords'] = 'PdfPages multipage keywords author title subject'
d['CreationDate'] = datetime.datetime(2009, 11, 13)
d['ModDate'] = datetime.datetime.today()
总结
在这个实验中,你学习了如何使用 Python Matplotlib 创建一个多页 PDF 文件。你还学习了如何为 PDF 文件附加元数据和注释。你可以使用这些技术来创建带有多个图表和注释的专业报告。