在 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()
我有一个从压缩列表时间序列线图生成的 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()