我的 imshow
子图上的 Y 限制卡在一个看似任意的范围内。
在这个例子中,我试图显示 N 次试验的平均值,然后将所有 N 次试验随着时间的推移绘制为二维图。
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(42)
N = 20 # number of trials
M = 3000 # number of samples in each trial
data = np.random.randn(N, M)
x = np.linspace(0,1,M) # the M samples occur in the range 0-1
# ie the sampling rate is 3000 samples per second
f, (ax1, ax2) = plt.subplots(2,1, sharex=True)
ax1.plot(x, np.mean(data, 0))
ax2.imshow(data, cmap="inferno", interpolation="nearest", extent=[0, 1, 0, N])
ax2.set_ylim(0, N)
ax1.set_ylabel("mean over trials")
ax2.set_ylabel("trial")
ax2.set_xlabel("time")
是否有任何技巧可以正确设置 Y 限制?
最佳答案
默认情况下, imshow 使用相等的纵横比。
由于您的 x 轴固定在上图 (ax1) 的范围内,即 1
,因此 y 轴只能扩展到 1
的一小部分。
解决方案其实很简单:你只需要添加
ax2.set_aspect('auto')
关于python - 使用 imshow 与 matplotlib 共享 x 轴,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40640333/