Сохранение анимации matplotlib с помощью imagemagick и без ffmpeg или mencoder

Я хочу создать анимацию вычисляемой функции. Я не могу установить ffmpeg или mencoder на кластер, который я использую для запуска анимации, но imagemagick установлен. matplotlib.animation по-видимому, поддерживает imagemagick в качестве автора анимации (см. здесь, например). В документации сказано, что поддерживаются следующие форматы:

['png', 'jpeg', 'ppm', 'tiff', 'sgi', 'bmp', 'pbm', 'raw', 'rgba']

Я распознаю некоторые из них как неанимированные типы файлов, но, очевидно, ffmpeg поддерживает .sgi файлы в некотором роде. Хорошо, если кодек, который я должен использовать на кластере, неясен, если я смогу конвертировать его на своем домашнем компьютере с помощью ffmpeg или mencoder.

Как я могу использовать imagemagick для сохранения анимации с помощью matplotlib?

2 ответа

Решение

Этот старый пост всплыл, пока я изо всех сил пытался получить matplotlib анимации экспортируются как анимированные GIF. Это не ракетостроение, но все же что-то вроде трудностей с настройкой в ​​первый раз. Я оставлю этот пост для дальнейшего использования.

Что касается специфики при настройке этой среды в кластере, я думаю, вам придется переводить каждый шаг для конкретных потребностей вашего сервера. Анимированный GIF - по крайней мере один из вариантов анимации, предлагаемых ImageMagickWriter, но может быть и больше.

Как

  • Получите двоичные файлы ImageMagick
  • Установите переменную среды MAGICK_HOME указывая на '<your-install-dir>\modules\coders' папку (см. документацию. Когда на Windows, не забудьте выйти и снова)
  • укажите matplotlib на установочный каталог ImageMagick: ( mpl docs на rcParams)

    import matplotlib.pyplot as plt
    plt.rcParams['animation.convert_path'] = '<your-install-dir>/magick.exe'
    
  • Экспортируйте свою анимацию! ( mpl документы наImageMagickFileWriter)

    writer = ImageMagickFileWriter()
    your_animation.save('location.gif', writer=writer)
    

Обратите внимание, что по умолчанию ошибки, выданные ImageMagick, не будут доходить до вас, кроме ненулевого кода возврата. Чтобы получить более обширную обратную связь, вам нужно что-то вроде

import matplotlib as mpl
mpl.verbose.set_level("helpful")

бонус

В качестве бонуса, вот подтверждение жизни:

Возраст матери на первой беременности в Нидерландах

На самом деле вы можете скачать imagemagick и отредактировать matplotlibrc, чтобы включить его

Другие вопросы по тегам