1

假设我有一堆 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)

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

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

4

3 回答 3

4

你可以尝试这样的事情:

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

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

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

于 2013-04-05T13:37:31.410 回答
1

您还可以使用mapxy作为名称空间变量和axx一些可迭代您的轴对象:

x = ...
y = ...

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

map(plotxy,axx)
于 2013-04-05T14:00:48.190 回答
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)
于 2013-04-05T13:37:06.653 回答