Matplotlib 简明教程

Matplotlib - Multipage PDF

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

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

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

Creating a Basic multipage PDF

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

Example

让我们从一个基本示例开始,演示如何使用 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

Adding Metadata and Annotations

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

Example

这是一个高级示例,它创建了一个包含元数据和注释的多页 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