Matplotlib子图:子图缩小,因此轴不匹配

o75abkj4  于 2023-03-13  发布在  其他
关注(0)|答案(1)|浏览(138)

我得到了两个numpy数组,我想把它们画在彼此的上面。它工作了,但是上面的图像被缩小了,所以轴不再匹配了。我可以通过设置Figsize为(8,8)来“修复”它,但是在图下面有一个很大的空白。
所以我的代码:

fig, (ax1, ax2) = plt.subplots(2, 1, sharex=True)
plt.subplots_adjust(hspace=0.2)

ax1.imshow(np_source, cmap='binary')
ax1.set_ylabel('Segmentiertes Bild')
ax1.xaxis.set_major_locator(plt.MultipleLocator(1))
ax1.yaxis.set_major_locator(plt.MultipleLocator(1))

ax2.imshow(achse, cmap='binary')
ax2.set_ylabel('Achse')
ax2.xaxis.set_major_locator(plt.MultipleLocator(1))
ax2.yaxis.set_major_locator(plt.MultipleLocator(1))

ax1.grid(color='dimgrey', which="both", linewidth=1)
ax2.grid(color='dimgrey', which="both", linewidth=1)

ax1.set_anchor('NW')
ax2.set_anchor('NW')

plt.show()

这是它产生的图像:

我如何对齐它们并删除底部白色?

eagi6jfj

eagi6jfj1#

您遇到这些问题是因为imshow默认为固定纵横轴,这给布局增加了额外的褶皱。
最好的办法是使子图的垂直纵横比与数据大小一致。如果您有现代Matplotlib,也可以使用layout='compressed'将轴垂直绘制在一起:
请注意,我使数字变灰,以便您可以看到它的范围。

import matplotlib.pyplot as plt
import numpy as np

X = np.random.randn(12, 29)
Y = np.random.randn(2, 29)

fig, axs = plt.subplots(2, 1, height_ratios=[12, 2], layout='compressed', sharex=True)

axs[0].imshow(X)
axs[1].imshow(Y)

有关https://matplotlib.org/stable/tutorials/intermediate/constrainedlayout_guide.html#grids-of-fixed-aspect-ratio-axes-compressed-layout详细信息,请访问www.example.com。

相关问题