0

我正在尝试用 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()
4

1 回答 1

1

我们正在改变数据的设置方式。而且我把帧数改成了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')

在此处输入图像描述

于 2020-11-13T12:21:08.883 回答