首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过循环和函数填充matplotlib子图

通过循环和函数填充matplotlib子图
EN

Stack Overflow用户
提问于 2014-12-19 23:43:28
回答 1查看 41.6K关注 0票数 19

我需要通过循环迭代来绘制图形的子图;每次迭代都会调用另一个模块(=另一个py文件)中定义的函数,该模块将绘制一对子图。下面是我尝试过的方法--可惜不起作用:

1)在循环之前,创建一个行数足够、列数为2的图形:

代码语言:javascript
运行
复制
 import matplotlib.pyplot as plt     
 fig, axarr = plt.subplots(nber_rows,2)

2)在循环内部,在迭代号iter_nber处,调用绘制每个子图的函数:

代码语言:javascript
运行
复制
 fig, axarr = module.graph_function(fig,axarr,iter_nber,some_parameters, some_data)

3)所讨论的函数基本上是这样的;每次迭代在同一行上创建一对子图:

代码语言:javascript
运行
复制
 def graph_function(fig,axarr,iter_nber,some_parameters, some_data):

     axarr[iter_nber,1].plot(--some plotting 1--)
     axarr[iter_nber,2].plot(--some plotting 2--)

     return fig,axarr

这不起作用。我在循环的末尾得到了一个空的图形。我已经尝试了上面的各种组合,比如在函数的返回参数中只留下axarr,但都没有用。显然,我不明白这个数字和它的次要情节的逻辑。

非常感谢您的任何建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-19 23:56:37

您发布的代码似乎基本上是正确的。除了索引,正如@hitzg提到的那样,你所做的一切看起来都很不寻常。

但是,从绘图函数返回图形和轴数组没有多大意义。(如果需要访问figure对象,则始终可以通过ax.figure获取它。)不过,传递并返回它们并不会改变任何事情。

这里有一个听起来像是你想要做的事情的快速例子。也许这有助于消除一些困惑?

代码语言:javascript
运行
复制
import numpy as np
import matplotlib.pyplot as plt

def main():
    nrows = 3
    fig, axes = plt.subplots(nrows, 2)

    for row in axes:
        x = np.random.normal(0, 1, 100).cumsum()
        y = np.random.normal(0, 0.5, 100).cumsum()
        plot(row, x, y)

    plt.show()

def plot(axrow, x, y):
    axrow[0].plot(x, color='red')
    axrow[1].plot(y, color='green')

main()

票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27569306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档