如何放慢matplotlib动画?

时间:2019-04-28 14:54:22

标签: python matplotlib animation

我正在尝试绘制一条线,为此我有三个点,它们在两个列表中: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()

 

2 个答案:

答案 0 :(得分:1)

首先,您的动画只有两个有效状态,因为动画功能实际上没有做任何事情。

您可以排除xy的定义,因为它们实际上并没有改变。要实际执行动画,您需要做的是每次调用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()