Python 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

我用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 = 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])