我目前正在进行一个项目,将绘制从加速度计收集的数据。为了更好地了解我们将要做的事情,我需要将数据绘制为一个网格,这是我使用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()具有sharex
和sharey
参数,它们自动将轴对齐到相同的范围。
所以在你的情况下,你应该简单地使用subplots(2, 2, sharey=True)
。
@Brendan的答案非常有效,但更简单的方法是在plt.subplots
的关键字参数中指定sharey=True
:
plt.subplots(2, 2, sharey=True)