我正在尝试绘制一条线,为此我有三个点,它们在两个列表中:x,y。 该代码有效,但是我看不到在我面前呈现的线条,因此,它始终看起来像图像。如何放慢此动画的播放速度? 这是代码:
将numpy导入为np
从matplotlib导入pyplot作为plt
从matplotlib导入动画
无花果= plt.figure()
ax = plt.axes(xlim = {0,105),ylim = {0,68))
行,= ax.plot([],[],lw = 2)
def init():
line.set_data([],[])
返回线,
def animate(i):
x = np.array([23.94,34.65,28.14])
y = np.array([5.984,6.664,6.256])
#x = np.linspace(0,2,1000)
#y = np.sin(2 * np.pi *(x-0.01 * i))
line.set_data(x,y)
返回线,
anim = animation.FuncAnimation(fig,animate,init_func = init,
帧= 1,间隔= 1,save_count = 50,blit = True)
FFWriter = animation.FFMpegWriter()
#ani.save('particle_box.avi',writer = FFWriter)
#anim.save('basic.mp4',writer = FFWriter)#,fps = 30)#,extra_args = ['-vcodec','libx264'])
plt.show()
答案 0 :(得分:1)
首先,您的动画只有两个有效状态,因为动画功能实际上没有做任何事情。
您可以排除x
和y
的定义,因为它们实际上并没有改变。要实际执行动画,您需要做的是每次调用anim_func
时改变行上的 points ,这可以通过 slicing {{ 1}}和x
:
y
最后,您应该修改x = np.array([23.94, 34.65, 28.14])
y = np.array([5.984, 6.664, 6.256])
def animate(i):
line.set_data(x[:i], y[:i])
的创建,使其间隔更长,例如:
FuncAnimation
答案 1 :(得分:1)
import numpy as np
from matplotlib import pyplot as plt
from matplotlib import animation
fig = plt.figure()
ax = plt.axes(xlim=(0, 105), ylim=(0, 68))
line, = ax.plot([], [], lw=2)
import math
def init():
line.set_data([], [])
return line,
x = np.array([])
y = np.array([])
for i in range(1000):
x = np.append(x, i)
y = np.append(y, 10 + 10 * math.sin(i / 10))
def animate(i):
line.set_data(x[:i], y[:i])
return line,
anim = animation.FuncAnimation(fig, animate, init_func=init, frames=len(x), interval=1, save_count = 50, blit=True)
FFWriter = animation.FFMpegWriter()
#ani.save('particle_box.avi', writer = FFWriter)
#anim.save('basic.mp4', writer = FFWriter)#, fps=30)#, extra_args=['-vcodec', 'libx264'])
plt.show()