繁体   English   中英

matplotlib // 子图之间的空间

[英]matplotlib // space between subplots

我想使用matplotlib.pyplot subplots图绘制图像(在第一行)以及一些图表(第二行和第三行)。 但是, imshow fucntion 在我无法摆脱的图像周围添加了一些额外的空白。 这是我的代码和我得到的情节:

rcParams['figure.figsize'] = (16, 14)
_, axes = plt.subplots(3, 3)

axes[0][0].imshow(image)
axes[0][0].set_title('title')
axes[0][0].set_xticklabels(list())
axes[0][0].set_yticklabels(list())
axes[0][0].grid(False)

axes[0][1].imshow(image)
axes[0][1].set_title('title')
axes[0][1].set_xticklabels(list())
axes[0][1].set_yticklabels(list())
axes[0][1].grid(False)

axes[0][2].imshow(image)
axes[0][2].set_title('title')
axes[0][2].set_xticklabels(list())
axes[0][2].set_yticklabels(list())
axes[0][2].grid(False)

plt.savefig(file_name, bbox_inches='tight')

在下图中,您可以清楚地看到第一行和第二行之间有明显更多的空间:

我得到的情节

我想在所有子图之间有一个相等的空间。 什么是最简单的方法来做到这一点?

提前感谢您的任何建议!

最好的,阿列克谢

这是因为imshow以方形像素显示图像。 如果图像的比例为 16:9,则子图将重新调整形状以适应图像大小。 因此,它们将具有与其他子图不同的形状(有关更多信息,请参阅imshow 文档)。

从这里,您有两个解决方案:

  • 减少图形高度以手动减少子图之间的垂直空间
  • 防止imshow根据图像调整轴的大小。 为此,您可以将纵横比设置为自动aspect="auto" ,图像将适合现有轴

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM