如何在 Matplotlib 中将图另存为 PDF 文件

Suraj Joshi 2023年1月30日
  1. savefig() 方法将图另存为 PDF 文件
  2. PdfPages 类的 savefig() 方法
如何在 Matplotlib 中将图另存为 PDF 文件

从 Matplotlib 生成的图可以通过使用 savefig()方法中文件名的.pdf 扩展名简单地保存为 PDF 文件。要将多个图保存在一个 PDF 文件中,我们使用 PdfPages 类。

savefig() 方法将图另存为 PDF 文件

我们可以使用 savefig() 方法将绘图简单地保存为 Matplotlib 中的图像文件。

savefig() 方法的语法:

matplotlib.pyplot.savefig(
    fname,
    dpi=None,
    facecolor="w",
    edgecolor="w",
    orientation="portrait",
    papertype=None,
    format=None,
    transparent=False,
    bbox_inches=None,
    pad_inches=0.1,
    frameon=None,
    metadata=None,
)

参数部分中的 fname 代表文件相对于工作目录的名称和路径。如果我们使用.pdf 作为文件名的扩展名,则该图将另存为 PDF 文件。

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 5, 50)
y = np.cos(2 * np.pi * x)

plt.scatter(x, y)
plt.plot(x, y)
plt.title("Plot of cosx")
plt.xlabel("x")
plt.ylabel("cosx")
plt.show()
plt.savefig("Save Plot as PDF file using savefig.pdf")

这会将生成的图以文件名 Save Plot as PDF file using savefig.pdf 保存在当前工作目录中。

PdfPages 类的 savefig() 方法

如果我们希望在一个图中绘制多个图,则可以使用 PdfPages 类的 savefig() 方法。

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

x = np.linspace(-3, 3, 100)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = 1 / (1 + np.exp(-x))
y4 = np.exp(x)


def retFig(x, y):
    fig = plt.figure()
    a = plt.plot(x, y)
    return fig


fig1 = retFig(x, y1)
fig2 = retFig(x, y2)
fig3 = retFig(x, y3)
fig4 = retFig(x, y4)

pp = PdfPages("Save multiple plots as PDF.pdf")
pp.savefig(fig1)
pp.savefig(fig2)
pp.savefig(fig3)
pp.savefig(fig4)
pp.close()

这会将 4 个生成的图形保存在 Matplotlib 中的单个 PDF 文件中,文件名为 Save multiple plots as PDF.pdf

在这里,我们返回每个图的图形,然后通过将单个图形传递到 PdfPages 类的 savefig() 方法中,将所有图形保存到单个 PDF 文件中。

作者: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn