python - 我无法更改 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'
。
非常感谢任何形式的帮助!
编辑:添加了情节的图像。
解决方案
正如@ImportanceOfBeingErnest 指出的那样,解决方案是使用 的top
和bottom
参数subplots_adjust()
。就我而言,fig.subplots_adjust(top=0.7,bottom=0.3)
这是我需要的。
推荐阅读
- android - 前台服务不适用于 Oreo (Android 8.1.0)
- java - 在谷歌数据存储中的不同实体之间级联重复属性更改的最佳实践?
- php - 我必须在哪里包含我的应用程序的业务逻辑?
- rstudio - 如何更改 RStudio 中的 spark.r.backendConnectionTimeout 值?
- python-3.x - 使用 for 循环填充 2D 数组,使用其他 2D 数组
- c# - WPF 图像 HESREST:0x88982F72
- php - 自动声明用户设置变量而不提交
- android - 在清单中设置 android:allowBackup="false",lint 警告缺失
资源 - excel - 错误 1004 应用程序定义或对象定义错误
- arrays - 以编程方式更改 Perl 中的排序顺序