小编LAB*_*ard的帖子

使用moviepy制作matplotlib图表的难度很大

我必须制作大量(~90,000)个数字的动画.对于上下文,它是1700年至1950年间每一天的地图,在相关的日子里标记了感兴趣的事件.我可以使用matplotlib.animation.FuncAnimation,并且我有一些代码可以在一个小的测试期内成功完成.然而,对于完整的数字集,这将花费不切实际的时间来渲染并将导致非常大的电影文件.我读过,显然moviepy提供了速度和文件大小的优点.但是,我无法让它工作 - 我相信我的问题是我还没有理解如何正确设置durationfps参数.

我的代码的简化版本是:

import numpy as np
import matplotlib.pyplot as plt
from moviepy.video.io.bindings import mplfig_to_npimage
import moviepy.editor as mpy

fig = plt.figure()
ax = plt.axes()
x = np.random.randn(10,1)
y = np.random.randn(10,1)
p = plt.plot(x,y,'ko')

time = np.arange(2341973,2342373)

def animate(i):
   xn = x+np.sin(2*np.pi*time[i]/10.0)
   yn = y+np.cos(2*np.pi*time[i]/8.0)
   p[0].set_data(xn,yn)
   return mplfig_to_npimage(fig)

fps = 1 
duration = len(time)
animation = mpy.VideoClip(animate, duration=duration)
animation.write_videofile("test.mp4", fps=fps)
Run Code Online (Sandbox Code Playgroud)

但是,这不会产生为每个元素生成一帧的电影的预期结果,time并将其保存为.mp4.我无法看到我出错的地方,任何帮助或指示将不胜感激.

祝你好,卢克

python matplotlib moviepy

6
推荐指数
1
解决办法
1576
查看次数

标签 统计

matplotlib ×1

moviepy ×1

python ×1