在 for 循环中将垂直堆叠的 3 行子图添加到 matplotlib

Adding vertically stacked 3 row subplots to matplotlib in for loop

我有一个从压缩列表时间序列线图生成的 for 循环。

现在我有了它,所以它会在 window 中生成一个图。当用户点击关闭时,下图显示。

我想让它以三个垂直堆叠的行显示所有这些具有各自轴和值的图。

我尝试通过下面的代码尝试循环“'ax'”,但它生成了相同的图,仅使用单个垂直堆叠。它正在遍历相同的数据,但我不确定如何从逻辑上更改它以便它遍历每个图。

for title,unit, y, x, in zip(NameData,UnitData,value_list,dates_list):
        if np.size(y) > 0:
            fig, ax = plt.subplots(10)
            fig.supxlabel('Time')
            try:
                fig.supylabel('Units:' + unit)
            except TypeError:
                pass
            for i in range(1):
                ax[i].plot(x,y)
                ax[i].set_title(title)
            plt.show()     
            plt.close()
        else:
            pass
NameData: [Dog,Cat,Mouse]
UnitData: [mm, cm, nm]
value_list: [[1,2,3],[4,5,6],[7,8,9]]
dates_list: datetime[[1/27/2012,1/28/2012,1/29/2012],[1/27/2012,1/28/2012,1/29/2012],[1/27/2012,1/28/2012,1/29/2012]]

这是您要实现的目标吗?

fig, ax = plt.subplots(nrows=3, ncols=1, sharex=True)
fig.supxlabel('Time')
for i, (title, unit, y, x) in enumerate(zip(NameData,UnitData,value_list,dates_list)):
    ax[i].plot(x,y)
    ax[i].set_title(title)
    ax[i].set_ylabel(unit)
plt.tight_layout()