matplotlib:当绘制许多子图时,图中出现空白区域

时间:2014-05-05 12:46:00

标签: python matplotlib

我正在使用matplotlib绘制几十个子图。在图的底部,在最后一行图和图例之间,出现一个空白区域。当我添加更多的子图时,空白区域会变大。知道如何摆脱这个空旷的空间吗?

这是工作代码:

import textwrap
import matplotlib.pyplot as plt
from collections import OrderedDict

rlen = 31 # number of plots
figsize = (11, 3) # matrix of subplots
fig = plt.figure(figsize=(figsize[1]*4, figsize[0]*4))

plots = []
for f_ind in range(rlen):
   plots.append(fig.add_subplot(figsize[0], figsize[1], f_ind))

fig.subplots_adjust(wspace=0.5, hspace=0.5)

for ax in plots:
   atitle = 'Aaa bbb ccc ' * 10
   ax.set_title('\n'.join(textwrap.wrap(atitle, 45)), fontsize=10)
   ax.plot(range(10), range(10), 'o', color='red', label='LABEL_1')
   revlist = list(reversed(range(10)))
   ax.plot(revlist, range(10), 'o', color='blue', label='LABEL_2')
   ax.set_xlabel('Train set size', fontsize=9)
   ax.set_ylabel('Accuracy (%)', fontsize=9)

handles, labels = plt.gca().get_legend_handles_labels()
by_label = OrderedDict(zip(labels, handles))
lgd = fig.legend(by_label.values(), by_label.keys(), loc='lower center', ncol=4)
fig.savefig('ZZZ.png', dpi=fig.dpi, bbox_extra_artists=(lgd,), bbox_inches='tight')

您还可以查看示例结果here。谢谢!

1 个答案:

答案 0 :(得分:5)

您可以使用bottom的{​​{1}}关键字来设置相对于图形绘制子图的点。

例如:

subplots_adjust

传说将接近“最低”的子图。以下是生成图像底部的裁剪:

enter image description here

fig.subplots_adjust(wspace=0.5, hspace=0.5, bottom=0) 外,还有bottomleftright个关键字。