Imagemagick через matplotlib, похоже, обрезает длину GIF при создании - PullRequest
0 голосов
/ 04 января 2019

В настоящее время я использую python matplotlib для создания анимированных графиков, а затем использую ImageMagick, чтобы превратить их в гифки.

Это строка кода, которая создает анимацию:

anim = animation.FuncAnimation(fig, animate, init_func = init, interval = 20, blit = True)

matplotlib счастливо оживляет их, используя plt.show()

Когда я экспортирую это как gif, я не получаю ошибок, создается gif, который отражает то, что отображается с plot.show(), но это только первые ~ 25% анимации (1.1MB).

Это код для его экспорта:

anim.save(filepath/name, writer = 'imagemagick')

Я охотился высоко и низко, но не могу найти ничего, что указывало бы, почему это может происходить. Кажется, не существует ограничений на размер файла или фреймы, сконфигурированные где-нибудь, что я бью. Если одно из созданных изображений было повреждено, я ожидаю, что анимация plt.show() не будет выполнена и / или будут получены сообщения об ошибках.

Любые указатели с благодарностью получены - я не могу найти нить, чтобы распутать этот!

1 Ответ

0 голосов
/ 07 января 2019

При исследовании выглядит так, как будто для функции сохранения по умолчанию установлено 100 кадров, если не указано иное. Я не видел этого в документации, но использовал счетчик функции iterate (), чтобы узнать, сколько раз она вызывается.

Этот предел не применяется для функции plt.show(), поэтому возникает расхождение.

Добавление количества точек данных к параметру кадров устраняет эту проблему. т.е.

anim = animation.FuncAnimation(fig, animate, frames = data_points, init_func = init, interval = 20, blit = True)
anim.save(filepath/name, writer = 'imagemagick')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...