迭代子图

时间:2018-08-17 14:53:00

标签: python loops matplotlib pythonxy

目前,我使用{p>创建一个子图(使用DatabaseConnection

matplotlib

我想在图中命名为ax1,ax2,... axn的可变数量的子图 所以应该像

import matplotlib.pyplot as plt
fig, (ax1, ax2, ax3) = plt.subplots(3, sharex=True)

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

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

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

控制台说

mylist[0]

我如何使用该数字绘制一条线,例如

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

2 个答案:

答案 0 :(得分:1)

您要尝试的是动态创建变量。您可以使用以下代码来做到这一点:

vars()[str_name_of_your_variable] = variable_assignment

但是强烈建议不要这样做,因为它不能提供有效的方式来处理可变数量的数据。最好将作业存储在列表或字典中:

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

axes中,您拥有所有轴,并且可以通过axes[n]进行选择。您可以根据需要将其放入字典中。

答案 1 :(得分:0)

创建多个轴时:

fig, axes = plt.subplots(3)

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

要使用它们进行绘图,您可以像往常一样{ax.plot(...))对数组进行索引以访问轴对象并进行绘图:

axes[0].plot(x, y)

如果有许多轴,则还可以遍历这些轴并绘制:

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