Matplotlib折线图动画

Matplotlib line chart animation

我正在尝试使用 2 个相等的数组为简单的折线图制作动画。我在网上看到了一些指南,但老实说,我不确定我在这里做什么,我接近解决方案了吗?

我在找这个:https://miro.medium.com/max/1126/1*j0LxVQPbwtQDpL17TH9gZw.gif

import numpy as np
from matplotlib import pyplot as plt
from matplotlib import animation

x = np.array([1,2,3,4,5,6,7,8])
y = np.array([6,9,12,42,50,62,76,82])
fig = plt.figure()
ax = plt.axes(xlim=(1, 8), ylim=(6, 82))
line, = ax.plot([], [], lw=2)

def init():
    line.set_data([], [])
    return line,

def animate(i):
    line.set_ydata(x[i:])
    line.set_xdata(y[i:])
    return line,

anim = animation.FuncAnimation(fig, animate, init_func=init,
                               frames=200, interval=20, blit=True)

anim.save('basic_animation.mp4', fps=30, extra_args=['-vcodec', 'libx264'])
plt.show()

我们正在改变数据的设置方式。而且我把帧数改成了9是因为数据的个数是8。另外我是用PIL制作GIF图片的,请指正。

import numpy as np
from matplotlib import pyplot as plt
from matplotlib import animation
from IPython.display import HTML
from matplotlib.animation import PillowWriter

x = np.array([1,2,3,4,5,6,7,8])
y = np.array([6,9,12,42,50,62,76,82])

fig = plt.figure()
ax = plt.axes(xlim=(1, 8), ylim=(6, 82))
line, = ax.plot([], [], lw=2)

def init():
    line.set_data([], [])
    return line,

def animate(i):
    line.set_data(x[:i],y[:i])
    return line,

anim = animation.FuncAnimation(fig, animate, init_func=init,
                               frames=9, interval=200, blit=True)

# anim.save('basic_animation.mp4', fps=30, extra_args=['-vcodec', 'libx264'])
# plt.show()
anim.save('plot_ani.gif', writer='pillow')