我如何将2x2的matplotlib网格的y值设置为共享常数?



我目前正在进行一个项目,将绘制从加速度计收集的数据。为了更好地了解我们将要做的事情,我需要将数据绘制为一个网格,这是我使用matplotlib完成的:

fig, axs = plt.subplots(2, 2)
axs[0, 0].plot(x, y)
axs[0, 0].set_title("Non Faulty Acc X Data")
axs[0, 1].plot(x2, y2, 'tab:orange')
axs[0, 1].set_title('Non Faulty Acc X Data')
axs[1, 0].plot(x3, y3, 'tab:green')
axs[1, 0].set_title('Faulty Acc X Data')
axs[1, 1].plot(x4, y4, 'tab:red')
axs[1, 1].set_title('Faulty Acc X Data')

使用这段代码,我得到以下输出。代码 的输出图像可以看出,两个图的y值(时间)不一样。
我试过这个代码:

plt.ylim([0, 1])

我在每个.set_title.plot方法之后都尝试过它。我也试过在for循环中使用它:

for ax in axs.flat:
plt.ylim([0, 1])
ax.set(ylabel='Time')

之后什么都没有改变。
我基本上需要第二个图形的y值能够匹配第一个图形的y值,以获得准确的输出。

Matplotlib的subplots()具有sharexsharey参数,它们自动将轴对齐到相同的范围。

所以在你的情况下,你应该简单地使用subplots(2, 2, sharey=True)

@Brendan的答案非常有效,但更简单的方法是在plt.subplots的关键字参数中指定sharey=True:

plt.subplots(2, 2, sharey=True)

最新更新