Python: 使用 for 循环在一个图中创建多个图

Python: Creating multiple plots in one figure with for loop

我尝试使用 matplotlib 创建一个 2 行 3 列的图网格(每个图上绘制了多个数据)。然而,无论我怎么尝试,最后保存的图只是其中一个图,其余的都是空白。我知道另一个已经制作完成,但它们没有出现在最终图像中。这是我正在尝试的一种基本版本。

注释掉的部分显示了我看到的一些替代方案。

f,axarr = plt.subplots(2,3, sharex='col', sharey='row')

for i,someargs in enumerate(namelist):
    x1,y1,x2,y2 = somefunction(someargs)  #output data
    ax = axarr.flat[i]  #or ax=axarr[row,col]
    ax.plot(x1,y1)
    ax.plot(x2,y2)
plt.savefig("name")
#or f.savefig("name")

我这样做的方式有问题吗?我得到的图像位于 http://i.imgur.com/QxYRnPT.png 任何帮助将不胜感激。

这里是您可以使用循环生成 subplots 的方法,您可以隐藏不需要的轴:

import pylab as plt
import numpy as np
fig ,axs=plt.subplots(2,3, sharex='col', sharey='row')
axs[-1,-1].axis('off')
namelist=['a','b','c','d','e']
ax=axs.ravel()
for i,someargs in enumerate(namelist):
    x1,y1,x2,y2 = somefunction(someargs)
    ax[i].plot(x1,y1)
    ax[i].plot(x2,y2)

在花了一些时间仔细研究我的情况后 运行,我发现问题可能出在我用来生成数据的函数及其与循环交互的方式上。确实,使用基本的测试数据没有问题。

该函数做了很多事情(并且需要并行处理),因此很难确切地说出它在做什么。

我不太确定出了什么问题,但我通过先存储数据解决了我的问题,然后 accessing/plotting 按照我发布的方式或与其他答案类似的方式解决了我的问题。