Matplotlib - 多页 PDF



一个多页PDF(便携式文档格式)是一种文件类型,可以将多个页面或图像存储在一个文档中。PDF中的每个页面都可以具有不同的内容,例如图表、图像或文本。

Matplotlib 通过其backend_pdf.PdfPages模块提供创建多页PDF的支持。此功能允许用户在同一个PDF文件中跨多个页面保存绘图和可视化结果。

在某些情况下,需要将多个绘图保存到一个文件中。虽然许多图像文件格式(如PNG、SVG或JPEG)通常只支持每个文件一个图像,但Matplotlib提供了一种创建多页输出的解决方案。PDF就是这样一种支持的格式,它允许用户有效地组织和共享可视化结果。

创建基本的 多页 PDF

要使用Matplotlib在PDF文档中保存多个页面的绘图,可以使用PdfPages类。此类简化了生成包含多个页面的PDF文件的过程,每个页面包含不同的可视化结果。

示例

让我们从一个基本的示例开始,演示如何使用Matplotlib创建多页PDF。此示例将多个图形一次性保存到一个PDF文件中。

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

# sample data for plots
x1 = np.arange(10)
y1 = x1**2

x2 = np.arange(20)
y2 = x2**2

# Create a PdfPages object to save the pages
pp = PdfPages('Basic_multipage_pdf.pdf')

def function_plot(X,Y):
   plt.figure()
   plt.clf()

   plt.plot(X,Y)
   plt.title('y vs x')
   plt.xlabel('x axis', fontsize = 13)
   plt.ylabel('y axis', fontsize = 13)
   pp.savefig()

# Create and save the first plot
function_plot(x1,y1)
# Create and save the second plot
function_plot(x2,y2)

pp.close()

输出

执行上述程序后,将在保存脚本的目录中生成'Basic_multipage_pdf.pdf'。

multipage_pdf_ex1

添加元数据和注释

Matplotlib还支持向多页PDF添加元数据和注释。元数据可以包括标题、作者和创建日期等信息,为PDF中的内容提供额外的上下文或详细信息。

示例

这是一个高级示例,它创建一个包含元数据和注释的多页PDF。

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

# Create the PdfPages object to save the pages
with PdfPages('Advanced_multipage_pdf.pdf') as pdf:

   # Page One
   plt.figure(figsize=(3, 3))
   plt.plot(range(7), [3, 1, 4, 1, 5, 9, 2], 'r-o')
   plt.title('Page One')
   # saves the current figure into a pdf page
   pdf.savefig()  
   plt.close()

   # Page Two

   # Initially set it to True. If LaTeX is not installed or an error is caught, change to `False`
   # The usetex setting is particularly useful when you need LaTeX features that aren't present in matplotlib's built-in mathtext.
   plt.rcParams['text.usetex'] = False
   plt.figure(figsize=(8, 6))
   x = np.arange(0, 5, 0.1)
   plt.plot(x, np.sin(x), 'b-')
   plt.title('Page Two')
   # attach metadata (as pdf note) to page
   pdf.attach_note("plot of sin(x)")  
   pdf.savefig()
   plt.close()

   # Page Three
   plt.rcParams['text.usetex'] = False
   fig = plt.figure(figsize=(4, 5))
   plt.plot(x, x ** 2, 'ko')
   plt.title('Page Three')
   pdf.savefig(fig)  
   plt.close()

   # Set file metadata
   d = pdf.infodict()
   d['Title'] = 'Multipage PDF Example'
   d['Author'] = 'Tutorialspoint'
   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(2024, 1, 15)
   d['ModDate'] = datetime.datetime.today()

输出

执行上述程序后,将在保存脚本的目录中生成'Advanced_multipage_pdf.pdf'。您将能够观察到如下详细信息:

multipage_pdf_ex2
广告
© . All rights reserved.