Сохранение анимации 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, чтобы включить его