python - 使用 matplotlib 'format "rgba 的动画“不支持”

标签 python macos animation matplotlib macports

我正在尝试使用示例使用 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/

相关文章:

Python自动化Outlook电子邮件: change sender or default reply-to address

带频率的 Python 字典

python - 使用多行属性解析 XML

php - Pecl 无法在 macOS Big Sur 上编译 Imagick 扩展,如何解决?

javascript - 一堆元素的旋转木马滑动

javascript - 动画不起作用后的 jquery 切换类

python - 用于将二维坐标映射到值的机器学习算法

macos - Electron 应用程序自动更新程序(签名应用程序)

macos - 去工具: no such tool "tour"

javascript - 如何在成帧器运动中多次使用动画