【问题标题】:I am not able to change the distance between to subplots in matplotlib我无法更改 matplotlib 中子图之间的距离
【发布时间】:2019-03-29 19:58:13
【问题描述】:

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

按照Improve subplot size/spacing with many subplots in matplotlib的建议,我尝试过使用plt.tight_layout()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'

Image of the plot

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

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

【问题讨论】:

  • 能否请您提供结果图,以便我们了解您所说的“相距太远”是什么意思?
  • plt.subplots_adjust 工作。您需要使用topbottom 参数。
  • @ImportanceOfBeingErnest 成功了!非常感谢!我只使用了hspace 参数,因此它不起作用。

标签: python matplotlib


【解决方案1】:

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

【讨论】: