有什么方法可以在没有ffmpeg的情况下使用移动绘图吗?
import matplotlib.animation as animation
from IPython.display import HTML
fig, ax = plt.subplots(figsize=(15, 8))
animator = animation.FuncAnimation(fig, draw_barchart, frames=range(1968, 2019))
HTML(animator.to_jshtml())
animator.save('dynamic_images.mp4')
我的代码在上面,我遇到了关键错误.mp4'
,ValueError: unknown file extension: .mp4
我尝试安装conda install -c conda-forge ffmpeg
时遇到SSL问题
有没有办法使用没有ffmpeg的移动图
就像抛出错误一样,可以使用'matplotlib.animation.PillowWriter'
免责声明:我通过了https://www.wikihow.com/Install-FFmpeg-on-Windows
链接,但该URL被IT团队屏蔽了
答案 0 :(得分:5)
这是我对 SO 的第一个回答,所以请保持温和。
上面的答案似乎是个好主意,但它没有回答为什么 matplotlib 内置方法不起作用,所以我决定添加一些解释。
这可能是重复的 (possible duplicate?)。
问题是您缺少 ffmpeg。
如果您使用 conda 作为管理器,请安装缺少的软件包。
你也可以使用 apt、dnf、pacman 或其他你正在使用的工具来做到这一点。
如果您使用的是 conda:
conda install -c conda-forge ffmpeg
ffmpeg on anaconda.org
您可能会错过另一个依赖项,即 Openh264
。
再次如果使用 conda:
conda install -c conda-forge openh264
Openh264 on anaconda.org
如果您仍然缺少更多依赖项,解决它们将取决于您使用的平台。
如果您使用的是 Windows,我建议您尝试使用 miniconda。
就我而言,在使用 conda(我的平台是/是 Fedora)安装 openh264 后,我仍然遇到问题,因为安装的 lib 被称为 libopenh264.so.6
而不是 libopenh264.so.5
。
无论如何,我决定尝试一下,并在同一目录 (6
) 中创建了一个指向以 /lib64/
结尾的版本的符号链接,并且成功了。
答案 1 :(得分:1)
您可以使用celluloid
库将动画剧情另存为.gif
:
from matplotlib import pyplot as plt
from celluloid import Camera
import numpy as np
# create figure object
fig = plt.figure()
# load axis box
ax = plt.axes()
# set axis limit
ax.set_ylim(0, 1)
ax.set_xlim(0, 10)
camera = Camera(fig)
for i in range(10):
ax.scatter(i, np.random.random())
plt.pause(0.1)
camera.snap()
animation = camera.animate()
animation.save('animation.gif', writer='PillowWriter', fps=2)
输出: