缩小pyplot中子图之间的差距

时间:2014-05-03 07:48:52

标签: python matplotlib plot subplot

我有四个混淆矩阵在pyplot中绘图。以下是我的代码和结果图:

confmatmap=cm.YlOrBr    
fig = plt.figure()

plt.clf()
ax = fig.add_subplot(221)
ax.set_aspect(1)
res = ax.imshow(np.array(norm_conf_1), cmap=confmatmap, interpolation='nearest')
plt.xticks(range(2), ['T', 'F']); plt.yticks(range(2), ['T', 'F'])

ax = fig.add_subplot(222)
ax.set_aspect(1)
res = ax.imshow(np.array(norm_conf_2), cmap=confmatmap, interpolation='nearest')
plt.xticks(range(2), ['','']);plt.yticks(range(2), ['','']);
ax = fig.add_subplot(223)
ax.set_aspect(1)
res = ax.imshow(np.array(norm_conf_3), cmap=confmatmap, interpolation='nearest')
plt.xticks(range(2), ['','']);plt.yticks(range(2), ['','']);
ax = fig.add_subplot(224)
ax.set_aspect(1)
res = ax.imshow(np.array(norm_conf_4![enter image description here][2]), cmap=confmatmap, interpolation='nearest')
plt.xticks(range(2), ['','']);plt.yticks(range(2), ['','']);


fig.subplots_adjust(left=0, bottom=0, right=1, top=1,wspace=0, hspace=0.1)

enter image description here

但左侧子图和右侧图之间的差距对我来说太大了。我希望垂直和水平间隙都是大致一个字符的大小。 我可以通过将hspace设置为非常小的值来缩小上下子图之间的差距,但wspace不起作用。 我认为这可能是因为子图有一些白色的空白部分。

如何在这里缩小任何指定值的差距?

2 个答案:

答案 0 :(得分:1)

尝试:

fig = plt.figure(figsize=(4, 4))

在开头,你的代码应该工作。问题似乎是与其内容不兼容的数字大小,因此无法同时尊重wspacehspace

答案 1 :(得分:0)

您使用fig.subplots_adjust(left=0, bottom=0, right=1, top=1)正确的方式。

例如,通过将left设置为非零,您可以向左移动左侧两个子图,即向右移动两个子图。因此,减小子图之间的宽度。

这将在图的左侧创建额外的空白区域,因为总大小不会改变。保存图片时,您可以通过添加选项bbox_inches = "tight"

来删除此图片

您可以使用的另一件事是:

fig.tight_layout()