我正试图策划' n' x和y坐标分别由sk_x(t,tau)和sk_y(t,tau)定义的行。如果我在循环之外使用相同的函数绘制它们,它会将函数绘制得很好,但是我无法使它们在animate(i)函数内工作。空图将在几分之一秒内出现,然后消失。问题肯定在于我如何处理动画功能,但我无法弄清楚错误是什么,它使用tau作为参数而不是t而不是反过来(见第二种)一点代码。)
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.animation as animation
v = 1
k = 1
b = 1
c = 100
f = 200
def sk_y(t, tau):
y = v*(t-tau)
return y
def sk_x(t, tau):
x = v*(np.log((1+k*t)/(1+k*tau)))/k
return x
fig = plt.figure()
ax = plt.axes(xlim=(0, sk_x(c,0)), ylim=(0, sk_y(c,0)))
lines = [plt.plot([], [])[0] for _ in range(200)]
def init():
m = 0
while m < c:
lines[m].set_data([], [])
m+=1
return lines
def animate(i):
n=-1
while n<c:
n+=1
t = np.linspace(0,i/2-n,100)
x = sk_x(t+n, n)
y = sk_y(t+n, n)
lines[n].set_data(x, y)
return lines #edited in
anim = animation.FuncAnimation(fig, animate, init_func=init, frames=f, interval=20, blit=True)
plt.show()
将此位用于animate函数可以正常工作
def animate(i):
tau = np.linspace(i*c/f, 0,100)
x = sk_x(c, tau)
y = sk_y(c, tau)
lines[0].set_data(x, y)
return lines
非常感谢任何帮助!
编辑:在动画功能中添加了返回功能,但它仍然不能同时适用于所有行。