迭代子图

Iterated subplot

目前,我用

制作了一个子图(使用matplotlib
import matplotlib.pyplot as plt
fig, (ax1, ax2, ax3) = plt.subplots(3, sharex=True)

我想要在名为 ax1、ax2、...axn 的地块中使用可变数量 (n) 个子地块 所以它应该是这样的

mylist = []
for num in xrange(n):
     mylist.append('ax'+str(num))
fig, (mylist) = plt.subplots(n, sharex=True)

但是,这不起作用,因为它只是覆盖 "mylist" 而不是使用列表中的名称。

另一种解决方案是,如果我没有创建列表而只是使用它为轴创建的名称,但是,我不知道如何访问这些名称。 如果我尝试使用

访问名称
mylist[0]

控制台显示

<matplotlib.axes._subplots.AxesSubplot object at 0x09BFAEF0>

如何使用这个数字绘制一条线,例如

 ax1.plot(data[:,0], data[:,1]

创建多个轴时:

fig, axes = plt.subplots(3)

axes 将是一个包含 3 个轴对象的 numpy 数组。

为了使用它们来绘图,您可以索引数组以访问坐标区对象并像往常一样绘图 (ax.plot(...)):

axes[0].plot(x, y)

如果你有很多轴,那么你也可以遍历这些轴并绘制:

for ax in axes.flatten():
    ax.plot(x, y)

您要做的是动态创建变量。您可以使用以下代码来完成此操作:

vars()[str_name_of_your_variable] = variable_assignment

然而,这是非常不鼓励的,因为它没有提供处理可变数量数据的有效方法。最好将分配存储在列表或字典中:

fig, axes = plt.subplots(n, sharex=True)

axes 中你拥有所有的轴,你可以通过 axes[n] select 它们。如果你愿意,你可以把它放进字典里。