16

如何使用“matplotlib.animation”模块设置保存为 mp4 电影的动画的分辨率?

在网上我只找到了使用“animation.FuncAnimation”的例子。例如来自http://jakevdp.github.com/blog/2012/08/18/matplotlib-animation-tutorial/的不错的教程使用:

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'])

从 matplotlib.animation 模块参考中,我找到了提供“dpi”参数的“animation.Animation.save”方法,但我不知道如何正确应用此功能

matplotlib.animation.Animation.save(filename, writer=None, fps=None, dpi=None, codec=None, bitrate=None, extra_args=None, metadata=None, extra_anim=None)

一个小的示例代码可能会有所帮助。

非常感谢。

约翰内斯

PS:顺便问一下,如何插入带有 sytax-highlighting 的 Python 代码?

4

2 回答 2

21

您可以通过迂回的方式控制分辨率。分辨率、图形大小和dpi并不是全部独立的,如果你知道其中两个,那么第三个是固定的。

您可以dpi在 save 参数中设置,在保存之前,设置图形的大小

fig.set_size_inches(w_in_inches, h_in_inches, True). 

你的决议是dpi * w_in_inches X dpi * h_in_inches

dpi = 100
writer = animation.writers['ffmpeg'](fps=30)
ani.save('test.mp4',writer=writer,dpi=dpi)

您可能需要从源代码升级到更新版本的 mpl (debian 很棒,因为它是如此保守而糟糕,因为它是如此保守)。

于 2013-02-02T21:24:43.733 回答
3

bitrate是用于指定电影质量的参数。您设置的值越高,电影的质量就越高。

于 2013-02-02T20:59:46.577 回答