我在 for 循环中有 6 个图,但我正在努力使用 plt.subplots 将它们放入 2x3 格式
I have 6 plots in a for loop but I am struggling to use plt.subplots to put them into a 2x3 format
我在一个 for 循环中有 6 个图,但不是垂直显示输出图,它们最好是 2x3 视图。
这是我的情节 for 循环:
#plt.figure(figsize=(10,10))
for i,l,k in zip(basin_id,basin_id_lsds,basin_names):
plt.plot(time_months,remove_seasonality(climatology(ob_monthly(fwf_tot_grnl,i,l)),ob_monthly(fwf_tot_grnl,i,l)),label=k)
plt.title(k)
plt.ylim(-30,50)
plt.grid()
plt.xlabel('Time')
plt.ylabel('FWF Anomalies')
plt.show()
我首先尝试更改子图,使 nrows = 3,ncols=2:
for i,l,k in zip(basin_id,basin_id_lsds,basin_names):
fig, ax = plt.subplots(nrows=3, ncols=2)
ax.plot(time_months,remove_seasonality(climatology(ob_monthly(fwf_tot_grnl,i,l)),ob_monthly(fwf_tot_grnl,i,l)),label=k)
ax.set_title(k)
#plt.ylim(-30,50)
#plt.grid()
#plt.xlabel('Time')
#plt.ylabel('FWF Anomalies')
plt.show()
但是我收到这个错误:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-76-f21ee20e457f> in <module>
1 for i,l,k in zip(basin_id,basin_id_lsds,basin_names):
2 fig, ax = plt.subplots(nrows=3, ncols=2)
----> 3 ax.plot(time_months,remove_seasonality(climatology(ob_monthly(fwf_tot_grnl,i,l)),ob_monthly(fwf_tot_grnl,i,l)),label=k)
4 ax.set_title(k)
5 #plt.ylim(-30,50)
AttributeError: 'numpy.ndarray' object has no attribute 'plot'
如何解决此问题以获得绘图的 2x3 视图?
总结评论:
- 在循环外创建子图:
- 使用
axs.ravel()
遍历子图。
fig, axs = plt.subplots(nrows=3, ncols=2, figsize=(10, 10))
for i,l,k,ax in zip(basin_id,basin_id_lsds,basin_names, axs.ravel()):
ax.plot(...)
我在一个 for 循环中有 6 个图,但不是垂直显示输出图,它们最好是 2x3 视图。
这是我的情节 for 循环:
#plt.figure(figsize=(10,10))
for i,l,k in zip(basin_id,basin_id_lsds,basin_names):
plt.plot(time_months,remove_seasonality(climatology(ob_monthly(fwf_tot_grnl,i,l)),ob_monthly(fwf_tot_grnl,i,l)),label=k)
plt.title(k)
plt.ylim(-30,50)
plt.grid()
plt.xlabel('Time')
plt.ylabel('FWF Anomalies')
plt.show()
我首先尝试更改子图,使 nrows = 3,ncols=2:
for i,l,k in zip(basin_id,basin_id_lsds,basin_names):
fig, ax = plt.subplots(nrows=3, ncols=2)
ax.plot(time_months,remove_seasonality(climatology(ob_monthly(fwf_tot_grnl,i,l)),ob_monthly(fwf_tot_grnl,i,l)),label=k)
ax.set_title(k)
#plt.ylim(-30,50)
#plt.grid()
#plt.xlabel('Time')
#plt.ylabel('FWF Anomalies')
plt.show()
但是我收到这个错误:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-76-f21ee20e457f> in <module>
1 for i,l,k in zip(basin_id,basin_id_lsds,basin_names):
2 fig, ax = plt.subplots(nrows=3, ncols=2)
----> 3 ax.plot(time_months,remove_seasonality(climatology(ob_monthly(fwf_tot_grnl,i,l)),ob_monthly(fwf_tot_grnl,i,l)),label=k)
4 ax.set_title(k)
5 #plt.ylim(-30,50)
AttributeError: 'numpy.ndarray' object has no attribute 'plot'
如何解决此问题以获得绘图的 2x3 视图?
总结评论:
- 在循环外创建子图:
- 使用
axs.ravel()
遍历子图。
fig, axs = plt.subplots(nrows=3, ncols=2, figsize=(10, 10))
for i,l,k,ax in zip(basin_id,basin_id_lsds,basin_names, axs.ravel()):
ax.plot(...)