matplotlib:子图y轴太压扁,pdfpages只输出到一页

时间:2017-04-23 08:22:01

标签: python matplotlib

我正在尝试创建一个(> 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页面?

感谢

1 个答案:

答案 0 :(得分:1)

PdfPages将一个matplotlib图保存到一页。第二次调用savefig命令将导致创建第二页。因此,如果您想要输出pdf中的第二页,则需要创建第二个数字。

E.g。您可以使用5x5网格生成第一个数字,并将前25个绘图放在该图中,然后保存它。然后创建下一个图,将接下来的25个图添加到其中并再次保存。

matplotlib页面上有一个multipage_pdf example