正如@Rutger Kassies在评论中指出的那样,
dline = plot(xx,data)
对输入数据进行一些魔术分析,将您的数组分成一堆xy对,并绘制它们。请注意,dline
是一个 列表 的Line2D
对象。在这种情况下
mline, = plot([],[])
mline.set_data(xx.T,data.T)
您正在创建一个Line2D
对象,并且库最好将2D数据推入到1D绘图对象中,并通过展平输入来做到这一点。
要设置N
线条动画,您只需要N
Line2D
对象:
lines = [plot([],[])[0] for j in range(Ny)] # make a whole bunch of lines
def init():
for mline in lines:
mline.set_data([],[])
return lines
def animate(coef):
data = odata * (1.-float(coef)/360.)
for mline, x, d in zip(lines, data.T, xx.T):
mline.set_data(x, d)
return lines
您也不需要预先分配,data
并且在python中执行循环要比让numpy
它们做起来要慢得多。