GSt*_*Sta 5 python pdf matplotlib multipage
我正在尝试执行以下操作:
我使用 matplotlib 创建了一个图形,其中包含几个子图。更具体地说,2x4 子图
输出非常适合在屏幕上显示,但不适合将其保存为 pdf。
如果我只是使用save_fig,它会打印一个带有 2x4 网格的单页 pdf 文档。
我想做的是重新排列我的子图,比方说一个 2x4 网格(选择哪个子图放在哪里,会很好,但不是必需的)并将其打印到 2 页 pdf,每个 4 个子图。(为了能够适合A4页面尺寸)
这可能吗?
提前谢谢您!
我建议创建 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)
| 归档时间: |
|
| 查看次数: |
12641 次 |
| 最近记录: |