Python 3.x matplotlib中的轴限制和sharex

Python 3.x matplotlib中的轴限制和sharex,python-3.x,matplotlib,Python 3.x,Matplotlib,我想展示两张这样的图片 import matplotlib as plt import numpy as np fig, axes = plt.subplots(2, 1, ) axes[0].imshow(np.random.random((3, 3))) axes[1].imshow(np.random.random((6, 3))) 然后,我尝试了sharex=True,这意外地改变了两个绘图的ylim。为什么?是否可以在不更改y轴限制的情况下对齐绘图 fig, axes =

我想展示两张这样的图片

import matplotlib as plt
import numpy as np    
fig, axes = plt.subplots(2, 1, )
axes[0].imshow(np.random.random((3, 3)))
axes[1].imshow(np.random.random((6, 3)))
然后,我尝试了
sharex=True
,这意外地改变了两个绘图的ylim。为什么?是否可以在不更改y轴限制的情况下对齐绘图

fig, axes = plt.subplots(2, 1, sharex=True)
axes[0].imshow(np.random.random((3, 3)))
axes[1].imshow(np.random.random((6, 3)))


我使用python 3.5.2和matplotlib 1.5.1。

默认情况下,imshow轴的纵横比相等。为了保持这一点,将更改限制

您有两个选择:

a) 免除相等的方面 将特性设置为“自动”。这允许子地块占用可用空间并共享其轴

import matplotlib.pyplot as plt
import numpy as np
   
fig, axes = plt.subplots(2, 1,sharex=True ) 
axes[0].imshow(np.random.random((3, 3)), aspect="auto")
axes[1].imshow(np.random.random((6, 3)), aspect="auto")

plt.show()

b) 调整图形大小或间距 可以调整地物大小或间距,使轴实际匹配。然后,您还需要根据图像尺寸设置高度比

import matplotlib.pyplot as plt
import numpy as np

fig, axes = plt.subplots(2, 1,sharex=True, figsize=(3,5), 
                            gridspec_kw={"height_ratios":[1,2]} ) 
plt.subplots_adjust(top=0.9, bottom=0.1, left=0.295, right=0.705, hspace=0.2)
axes[0].imshow(np.random.random((3, 3)))
axes[1].imshow(np.random.random((6, 3)))

plt.show()


这种方法要么涉及一些尝试和错误,要么涉及复杂的计算,例如在。

I did
fig,axes=plt。子批次(2,1,sharex=True,figsize=(1,5))
。这会在两幅图像中添加一些空白,但保留纵横比。