【发布时间】:2015-02-18 13:57:48
【问题描述】:
我需要通过循环迭代绘制图形的子图;每次迭代都会调用另一个模块(=另一个 py 文件)中定义的函数,该函数绘制一对子图。这是我尝试过的 - 可惜不起作用:
1) 在循环之前,创建一个具有足够行数和 2 列的图形:
import matplotlib.pyplot as plt
fig, axarr = plt.subplots(nber_rows,2)
2) 在循环内部,在迭代号 iter_nber 处,调用绘制每个子图的函数:
fig, axarr = module.graph_function(fig,axarr,iter_nber,some_parameters, some_data)
3) 有问题的函数基本是这样的;每次迭代都会在同一行创建一对子图:
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,但无济于事。显然我不明白这个数字及其子图的逻辑。
非常感谢任何建议。
【问题讨论】:
-
你能提供一个可行的例子吗?
-
谢谢hitzg。我希望简化的代码可以帮助您了解我的问题。真正的代码非常非常长,充满了与手头的问题完全无关的细节。
-
在
axarr[iter_nber,2]中的索引2看起来很奇怪。这应该会引发错误 -
我认为这将是子图网格的 2d 列?事实上,我完全没有错误。只是一个空的数字。
-
@Charles - Numpy 数组(或多或少所有 python 对象)使用从 0 开始的索引。
x[2]是 x 中的第三项,而不是第二项。您发布的代码看起来基本正确。该错误可能是由于您发布的代码中没有显示的相当普通的东西。
标签: python matplotlib subplot