如何在 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