Python Moviepy

博客分类: research 阅读次数: comments

Python Moviepy

用Python和MoviePy将数据动态可视化

用Matplotlib的动画

2D/3D绘图库Matplotlib已经有了动画模块,但我发现moviepy可以做出更轻量级,质量更好的视频,却达到了两倍的速度(不知道为什么?在这里看到更多细节)。这里有个如何使用matplotlib和moviepy的例子

import matplotlib.pyplot as plt
import numpy as np
from moviepy.video.io.bindings import mplfig_to_npimage
import moviepy.editor as mpy
 
# DRAW A FIGURE WITH MATPLOTLIB
 
duration = 2
 
fig_mpl, ax = plt.subplots(1,figsize=(5,3), facecolor='white')
xx = np.linspace(-2,2,200) # the x vector
zz = lambda d: np.sinc(xx**2)+np.sin(xx+d) # the (changing) z vector
ax.set_title("Elevation in y=0")
ax.set_ylim(-1.5,2.5)
line, = ax.plot(xx, zz(0), lw=3)
 
# ANIMATE WITH MOVIEPY (UPDATE THE CURVE FOR EACH t). MAKE A GIF.
 
def make_frame_mpl(t):
    line.set_ydata( zz(2*np.pi*t/duration))  # <= Update the curve
    return mplfig_to_npimage(fig_mpl) # RGB image of the figure
 
animation =mpy.VideoClip(make_frame_mpl, duration=duration)
animation.write_gif("sinc_mpl.gif", fps=20)

1