我正在尝试使用示例使用 matplotlib 制作动画 from here .起初问题是没有安装 ffmpeg,所以我从 macports 安装了它——但并不是说不支持“rgba”。错误信息:
File "Plot_shocktube1D.py", line 85, in <module>
animDensity.save(densityAnimationName, extra_args=['-vcodec', 'libx264']) #, writer=movWriter)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/animation.py", line 615, in save
writer.grab_frame()
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/animation.py", line 199, in grab_frame
dpi=self.dpi)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/figure.py", line 1363, in savefig
self.canvas.print_figure(*args, **kwargs)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/backend_bases.py", line 2012, in print_figure
print_method = self._get_print_method(format)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/backend_bases.py", line 1953, in _get_print_method
'%s.' % (format, ', '.join(formats)))
ValueError: Format "rgba" is not supported.
Supported formats: bmp, emf, eps, gif, jpeg, jpg, pdf, pgf, png, ps, raw, rgba, svg, svgz, tif, tiff.
现在,经过一番努力,我使用 png
而不是 rgba
设置了一个 FFMpegWriter
,但现在我遇到了新的错误...
movWriter = anim.FFMpegWriter(fps=5, codec=None, bitrate=None, extra_args=None, metadata=None)
movWriter.frame_format = 'jpg'
animDensity = anim.FuncAnimation(fig, animateDensity, frames=10, interval=100, blit=True)
animDensity.save(densityAnimationName, extra_args=['-vcodec', 'libx264'], writer=movWriter)
有错误:
File "Plot_shocktube1D.py", line 85, in <module>
animDensity.save(densityAnimationName, extra_args=['-vcodec', 'libx264'], writer=movWriter)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/animation.py", line 615, in save
writer.grab_frame()
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/animation.py", line 199, in grab_frame
dpi=self.dpi)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/figure.py", line 1363, in savefig
self.canvas.print_figure(*args, **kwargs)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/backend_bases.py", line 2093, in print_figure
**kwargs)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/backends/backend_macosx.py", line 326, in print_jpg
self._print_bitmap(filename, *args, **kwargs)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/backends/backend_macosx.py", line 319, in _print_bitmap
self.write_bitmap(filename, width, height, dpi)
ValueError: Unknown file type
我得到的印象是我只是没有安装我需要的东西...通常 macports 会为我设置好一切,但我不确定去哪里找。任何帮助将不胜感激。
最佳答案
那个 use() 语句对我没有帮助,但我遇到了与您尝试获取 basic matplotlib animation example 的第二部分相同的错误在 IPython 工作。我使用 macports 安装 ffmpeg,然后收到相同的 rgba 不支持警告(尽管 rgba 出现在支持的格式列表中!)。
无论如何,我发现如果我使用明确的 FFMpegFileWriter(而不仅仅是 FFMpegWriter),一切正常,并且 rgba 问题消失了,我得到了一个可用的 m4v 文件:
import matplotlib.animation as animation
fig2 = plt.figure()
x = np.arange(-9, 10)
y = np.arange(-9, 10).reshape(-1, 1)
base = np.hypot(x, y)
ims = []
for add in np.arange(15):
ims.append((plt.pcolor(x, y, base + add, norm=plt.Normalize(0, 30)),))
im_ani = animation.ArtistAnimation(fig2, ims, interval=50, repeat_delay=3000, blit=True)
im_ani.save('im.m4v', writer=animation.FFMpegFileWriter(), metadata={'artist':'Guido'})
关于python - 使用 matplotlib 'format "rgba 的动画“不支持”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14653159/