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