我在for循环中有6个图,但我很难使用plt.subplots将它们转换为2x3格式



我在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(...)

最新更新