Python 3.x 如何消除图像和线条图之间的空白?设置';hspace';到0不';我做不到

Python 3.x 如何消除图像和线条图之间的空白?设置';hspace';到0不';我做不到,python-3.x,matplotlib,plot,imshow,Python 3.x,Matplotlib,Plot,Imshow,所以我试着在Matplotlib中得到一个强度图和一个光谱图像。但它就是不起作用。我尝试了在和问题中建议的大多数东西,但这些都是针对相同类型的子地块的,并且没有一个使差距消失。我在代码中使用的一个,在plt.subplot()中设置关键字参数gridspec_kw={'wspace':0,'hspace':0},对我来说似乎是最合理的,但它也失败了。如何消除图像和绘图之间的所有空白 我的Matplotlib版本是2.2.2 代码: 结果: 出现问题的原因是图像的纵横比在plt.imshow()中

所以我试着在Matplotlib中得到一个强度图和一个光谱图像。但它就是不起作用。我尝试了在和问题中建议的大多数东西,但这些都是针对相同类型的子地块的,并且没有一个使差距消失。我在代码中使用的一个,在
plt.subplot()
中设置关键字参数
gridspec_kw={'wspace':0,'hspace':0}
,对我来说似乎是最合理的,但它也失败了。如何消除图像和绘图之间的所有空白

我的Matplotlib版本是
2.2.2

代码:

结果:
出现问题的原因是图像的纵横比在
plt.imshow()
中默认设置为“相等”。这会更改子批次的布局并干扰
hspace
参数

您有两种选择。首先,您可以将图像的纵横比设置为“自动”,并将
hspace
保持为0。但是,如果纵横比很重要,则可以通过设置负值手动调整hspace参数

举一个简单的例子:

image = np.random.randint(0,20,(300,1300)) # fake data

# ====== Option 1 ======
fig, (axint, axim) = plt.subplots(2, 1, gridspec_kw = {'hspace':0})
axim.imshow(image, aspect="auto")

# ====== Option 2 ======
# fig, (axint, axim) = plt.subplots(2, 1, gridspec_kw = {'hspace':-0.23})
# axim.imshow(image)

axim.get_yaxis().set_visible(False)

axint.plot(np.arange(0,1300), np.random.randn(1300), "b")
axint.get_xaxis().set_visible(False)

plt.show()
两种方法都给出:

如果纵横比不重要,我认为选项1更好。选项2需要反复试验才能为
hspace
找到正确的参数。此外,如果通过拖动窗口更改地物大小,则选项2将无法正确缩放

image = np.random.randint(0,20,(300,1300)) # fake data

# ====== Option 1 ======
fig, (axint, axim) = plt.subplots(2, 1, gridspec_kw = {'hspace':0})
axim.imshow(image, aspect="auto")

# ====== Option 2 ======
# fig, (axint, axim) = plt.subplots(2, 1, gridspec_kw = {'hspace':-0.23})
# axim.imshow(image)

axim.get_yaxis().set_visible(False)

axint.plot(np.arange(0,1300), np.random.randn(1300), "b")
axint.get_xaxis().set_visible(False)

plt.show()