Python matplotlib中带有循环数据的动画打印
我用matplotlib制作了一个动画程序,程序代码如下:Python matplotlib中带有循环数据的动画打印,python,animation,matplotlib,Python,Animation,Matplotlib,我用matplotlib制作了一个动画程序,程序代码如下: import numpy as np import matplotlib.pyplot as plt from matplotlib import animation def fung(y,v,t,w,g,A): import numpy as np return -g*v - np.sin(y) + A*np.sin(w*t) datax = [] datay = [] fig = plt.figure() ax
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import animation
def fung(y,v,t,w,g,A):
import numpy as np
return -g*v - np.sin(y) + A*np.sin(w*t)
datax = []
datay = []
fig = plt.figure()
ax = plt.axes(xlim=(0,200), ylim=(-20,20))
line, = ax.plot([], [], '-')
g = 0.2
A = 2
w = np.pi*0.1
y0 = 0.0
v0 = 0.0
dt = 0.1
t0 = 0.0
for i in range (10000):
t = t0 +dt
y = y0 +dt*v0
v = v0 + dt*fung(y0,v0,t0,w,g,A)
t0 = t
v0 = v
y0 = y
datax.append(t0)
datay.append(y0)
#def init():
# line.set_data([], [])
# return line,
def animate(i):
line.set_ydata(datay[i])
line.set_xdata(datax[i])
return line,
anim = animation.FuncAnimation(fig, animate, interval=50, blit=True)
plt.show()
编译后,在matplotlib图中未描绘任何图形
谁能给我一些提示吗
非常感谢您在一点上设置数据,您说: 这就是结果代码: 设置ylim=-10,40或ylim=-40,40或图形的一半不可见。要逐步构建图形,请在animatei中使用: 显示索引i-1之前的所有点 您可能希望加快速度,使用interval=10或一次将显示增加5个点
line.set_ydata(datay[:5*i])
line.set_xdata(datax[:5*i])
为了乐趣和利润,设置间隔=5并使用
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import animation
def fung(y,v,t,w,g,A):
return -g*v - np.sin(y) + A*np.sin(w*t)
datax = []
datay = []
fig = plt.figure()
ax = plt.axes(xlim=(0,200), ylim=(-50,50))
line, = ax.plot(datax, datay, '-')
g = 0.2
A = 2
w = np.pi*0.1
y0 = 0.0
v0 = 0.0
dt = 0.1
t0 = 0.0
for i in range (10000):
t = t0 +dt
y = y0 +dt*v0
v = v0 + dt*fung(y0,v0,t0,w,g,A)
t0 = t
v0 = v
y0 = y
datax.append(t0)
datay.append(y0)
#def init():
# line.set_data([], [])
# return line,
def animate(i):
line.set_ydata(datay)
line.set_xdata(datax)
return line,
anim = animation.FuncAnimation(fig, animate, interval=50, blit=True)
plt.show()
line.set_ydata(datay[:i])
line.set_xdata(datax[:i])
line.set_ydata(datay[:5*i])
line.set_xdata(datax[:5*i])
line.set_ydata(datay[i-10:i])
line.set_xdata(datax[i-10:i])