通过循环使用一个命令绘制大量轴对象

时间:2013-04-05 13:31:44

标签: python loops matplotlib

说我有一堆ax1,ax2,ax3 ......我想通过绘图功能运行它们:

def plotxy(ax,x,y):
    x = np.array(x)
    y = np.array(y)
    ax.plot(x,y)

(显然简化)

如何在不执行的情况下重复命令:

plotxy(ax1,x,y)
plotxy(ax2,x,y)
...
plotxy(axn,x,y)

我确信有一种方法可以创建一个临时变量,它将轴保持在一个循环中,该循环可能只有一行。有任何想法吗?它会大大缩短我的代码,因为我有很多东西我需要用相同的命令绘制但不同的x& y和多个子图。

我想这是使用循环构造变量名的一个大问题的一部分吗?

3 个答案:

答案 0 :(得分:4)

你可以尝试这样的事情:

import matplotlib.pyplot as plt
fig, axs = plt.subplots(nrows=3, ncols=2)

for ax in axs.flat:
    plotxy(ax,x,y)

如果使用plt.subplotplt.axes,您可以手动创建轴列表/数组

答案 1 :(得分:1)

您还可以使用mapxy作为名称空间变量,axx可以在轴对象上进行迭代:

x = ...
y = ...

def plotxy(ax):
    ax.plot(x,y)

map(plotxy,axx)

答案 2 :(得分:0)

我可能在你的问题中遗漏了一些东西,但你为什么不用一个简单的循环?

for ax in ( ax1, ax2, ..., axn ):
    plotxy(ax,x,y)

您还可以避免显式列出所有变量:

axes = ( locals()['ax%d'%i] for i in range(1, n+1) )
for ax in axes:
    plotxy(ax,x,y)