缩小pyplot中子图之间的间隙
我有四个混淆矩阵想在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)
但是我觉得左边和右边的子图之间的间距太大了。我希望上下和左右的间距都大约是一个字符的宽度。我可以通过把hspace
设置得很小来缩小上下子图之间的间距,但wspace
似乎没有效果。我想这可能是因为子图之间有一些空白部分是白色的。
我该如何把这些间距缩小到我想要的大小呢?
2 个回答
0
你现在的做法是对的,使用 fig.subplots_adjust(left=0, bottom=0, right=1, top=1)
这个代码。
比如说,如果你把左边的值设为非零,就可以把左边的两个小图往里面移动,也就是朝右边的两个小图靠近。这样就能减少小图之间的宽度。
不过这样做会在图的左边留出额外的空白,因为整体的大小没有变化。当你保存这个图像时,可以通过加上这个选项来去掉多余的空白: bbox_inches = "tight"
还有一个可以使用的方法是:
fig.tight_layout()
1
试着在开头加上:
fig = plt.figure(figsize=(4, 4))
这样你的代码应该就能正常运行了。问题似乎出在图形的大小上,它和内容不匹配,导致无法同时满足 wspace
和 hspace
的要求。