Lossless .avi Matplotlib plot/movie sequences
Related: write lossy compressed Matplotlib video
A large time series of line plots or images using Matplotlib is shared most easily as a movie file.
Example of Matplotlib movie write
In example matplotlib_writeavi.py, just four added lines of code do the AVI writing.
- first line tells Matplotlib to use FFmpeg
- second line tells Matplotlib to make a lossless FFV1 video at 15 frames/sec.
One can optionally use
codec='mpeg4'
, but lossy encoding can wash out details of plots. - third line says to use 100 DPI (smaller DPI–smaller file and movie size)
import matplotlib.animation as anim
#...
Writer = anim.writers['ffmpeg']
writer = Writer(fps=15, codec='ffv1')
# ...
with writer.saving(fg, fn,100):
# ...
writer.grab_frame(facecolor='k')
If you have problems playing back the .avi file, try omitting the codec='ffv1'
parameter.
Minimum AVI frame rate
Note that using less than 3 fps can invoke bugs on VLC. VLC has trouble with slow frame rate video from any source