【问题标题】:Matplotlib line chart animationMatplotlib 折线图动画
【发布时间】:2021-02-25 10:25:23
【问题描述】:

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

【问题讨论】:

  • 两个错别字。 line.set_ydata(x[i:]) 当然是 line.set_ydata(y[:i])。 x 值相同。等等。

标签: matplotlib matplotlib-animation


【解决方案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')

【讨论】:

  • @Mr.T 我再次查看了它。确实是frames=9。谢谢。
猜你喜欢
  • 2018-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多