首页 > 解决方案 > 我无法更改 matplotlib 中子图之间的距离

问题描述

我对 python 很陌生,我正在将两个imshow对象绘制成一个图形,一个在另一个下方。但是,我无法更改两个对象之间的水平距离,即它们相距太远。

正如在 matplotlib 中使用许多子图改善子图大小/间距中所建议的那样,我尝试使用plt.tight_layout()and plt.subplots_adjust,但它根本不影响绘图。

这就是我创建绘图的方式(我省略了定义要绘制的数组和绘图属性的部分imshow):

fig = plt.figure()
ax1 = fig.add_subplot(211)
ax1.imshow(help_vector, cmap=cmap, norm=norm)
ax2 = fig.add_subplot(212)
ax2.imshow(plot_vector, cmap=cmap, norm=norm)

我不知道这是否重要,但两个子图都有一个标题,整个图都有一个标题,第二个子图旁边有一个“图例”,我使用以下代码创建:

patches = [mpatches.Patch(color='lime', label = 'No relevant error'), mpatches.Patch(color='yellow',label='Medium error'), mpatches.Patch(color='orange',label='Large error'), mpatches.Patch(color='red',
    label='Unacceptable')]
    plt.legend(handles=patches, bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0)

使用 存储图像时savefig,我添加了参数bbox_inches='tight'

情节图片

非常感谢任何形式的帮助!

编辑:添加了情节的图像。

标签: pythonmatplotlib

解决方案


正如@ImportanceOfBeingErnest 指出的那样,解决方案是使用 的topbottom参数subplots_adjust()。就我而言,fig.subplots_adjust(top=0.7,bottom=0.3)这是我需要的。


推荐阅读