Python matplotlib:保存为多页pdf

GSt*_*Sta 5 python pdf matplotlib multipage

我正在尝试执行以下操作:

我使用 matplotlib 创建了一个图形,其中包含几个子图。更具体地说,2x4 子图

输出非常适合在屏幕上显示,但不适合将其保存为 pdf。

如果我只是使用save_fig,它会打印一个带有 2x4 网格的单页 pdf 文档。

我想做的是重新排列我的子图,比方说一个 2x4 网格(选择哪个子图放在哪里,会很好,但不是必需的)并将其打印到 2 页 pdf,每个 4 个子图。(为了能够适合A4页面尺寸)

这可能吗?

提前谢谢您!

Imp*_*est 1

我建议创建 3 个数字。1 个用于显示,2 个用于保存并绘制相同的数据。

import matplotlib.pyplot as plt
import numpy as np


data = np.sort(np.cumsum(np.random.rand(24,16), axis=0), axis=0)

def plot(ax, x, y, **kwargs):
    ax.plot(x,y, **kwargs)

colors = ["crimson", "indigo", "limegreen", "gold"]
markers = ["o", "", "s", ""]
lines = ["", "-", "", ":"]

# figure 0 for showing
fig0, axes = plt.subplots(nrows=2,ncols=4)

for i, ax in enumerate(axes.flatten()):
    plot(ax, data[:,2*i], data[:,2*i+1], marker=markers[i%4], ls=lines[i%4],color=colors[i%4])


# figure 1 for saving
fig1, axes = plt.subplots(nrows=1,ncols=4)
for i, ax in enumerate(axes.flatten()):
    plot(ax, data[:,2*i], data[:,2*i+1], marker=markers[i], ls=lines[i],color=colors[i])

#figure 2 for saving
fig2, axes = plt.subplots(nrows=1,ncols=4)
for i, ax in enumerate(axes.flatten()):
    plot(ax, data[:,2*i+4], data[:,2*i+1+4], marker=markers[i], ls=lines[i],color=colors[i])

#save figures 1 and 2
fig1.savefig(__file__+"1.pdf")
fig2.savefig(__file__+"2.pdf")

#close figures 1 and 2
plt.close(fig1)
plt.close(fig2)
#only show figure 0
plt.show()
Run Code Online (Sandbox Code Playgroud)