【问题标题】:Iterated subplot迭代子图
【发布时间】:2018-08-17 14:53:00
【问题描述】:

目前,我制作了一个子图(使用matplotlib

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

我想要一个可变数量 (n) 的子图,命名为 ax1, ax2, ... axn 所以应该是这样的

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]

【问题讨论】:

    标签: python loops matplotlib pythonxy


    【解决方案1】:

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

    vars()[str_name_of_your_variable] = variable_assignment
    

    但是,我们强烈建议不要这样做,因为它没有提供处理可变数量数据的有效方法。最好将分配存储在列表或字典中:

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

    axes 中,您拥有所有轴,您可以通过axes[n] 选择它们。如果需要,可以将其放入字典中。

    【讨论】:

      【解决方案2】:

      当您创建多个轴时:

      fig, axes = plt.subplots(3)
      

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

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

      axes[0].plot(x, y)
      

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

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

      【讨论】:

        猜你喜欢
        • 2014-06-29
        • 1970-01-01
        • 2019-08-30
        • 2010-11-25
        • 2020-04-17
        • 2019-04-30
        • 1970-01-01
        • 1970-01-01
        • 2016-02-06
        相关资源
        最近更新 更多