说我有一堆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和多个子图。
我想这是使用循环构造变量名的一个大问题的一部分吗?
答案 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.subplot
或plt.axes
,您可以手动创建轴列表/数组
答案 1 :(得分:1)
您还可以使用map,x
和y
作为名称空间变量,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)