2013-02-01 47 views
3

我想用matplotlib制作动画,使用示例from here。起初问题是没有安装ffmpeg,所以我从macports安装了它 - 但不是说'rgba'不受支持。错误消息:动画与matplotlib格式“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设置了我的一切,我不是真的确定去哪里看。任何帮助将不胜感激。

回答

3

使用()语句没有帮助我,但我遇到了同样的错误,你试图获得在IPython中工作的basic matplotlib animation example的第二部分。我使用macports安装ffmpeg,然后获得了相同的rgba不支持的警告(尽管rgba出现在支持的格式列表中!)。

无论如何,我发现,如果我用了一个显式FFMpegFileWriter(不只是FFMpegWriter),一切OK,和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'}) 
1

的解决方案,我不知道为什么,就是让matplotlib使用一种叫“AGG的”:

import matplotlib 
matplotlib.use("Agg") 
+1

我不知道为什么要么,但这解释:http://matplotlib.org/faq/howto_faq.html#matplotlib-in-a-web-application-server –