我正在尝试创建一个(> 100个)子图,供以后分析。一个高达5x5的网格似乎工作得很好,任何大于此的网格,y轴开始变得非常压扁,整个事情都是不可读的。我尝试了各种不同的东西,比如设置方面等,但无济于事。
以下是5x50网格的输出: squashed subplots
这是我的代码:
from matplotlib.backends.backend_pdf import PdfPages
pp = PdfPages('./output.pdf')
num_investigate = len(investigate)
ncols = 5
nrows = 50#math.ceil(num_investigate/ncols)
fig, axs = plt.subplots(nrows=nrows, ncols=ncols, sharex=False, figsize=(15,15))
for ax, file in zip(axs.flat, investigate[:(ncols*nrows)]):
try:
df = get_df_from_csv(file)
df['perf'] = df['val'] / df['val'].ix[0] - 1
#ax.set_ylim(bottom=df['perf'].min(), top=df['perf'].max())
ax.set_aspect('auto')
df['perf'].plot(ax=ax, title=file)
except:
pass
plt.tight_layout()
pp.savefig()
pp.close()
经过大量研究,我真的失去了如何解决这个问题。
如何确保每个子图块大小不变并且输出转到多个pdf页面?
感谢
答案 0 :(得分:1)
PdfPages
将一个matplotlib图保存到一页。第二次调用savefig命令将导致创建第二页。因此,如果您想要输出pdf中的第二页,则需要创建第二个数字。
E.g。您可以使用5x5网格生成第一个数字,并将前25个绘图放在该图中,然后保存它。然后创建下一个图,将接下来的25个图添加到其中并再次保存。
matplotlib页面上有一个multipage_pdf example。