Python Несколько проблем создания GIF с использованием анимации. FuncAnimation - PullRequest
0 голосов
/ 28 марта 2020

Я столкнулся с несколькими проблемами, когда пытался создать GIF с помощью функции анимации в Python.

Вот мой код:

import matplotlib.pyplot as plt
import random
import matplotlib.animation as animation

xdata = []
ydata = []
fig, ax = plt.subplots()
line, = ax.plot(xdata, ydata, marker='o', markeredgewidth=9)
n = -1

def data_gen():
    global n
    while True:
        xdata.clear()
        ydata.clear()
        for i in range(3):
            xdata.append(random.randint(0, 10))
            ydata.append(random.randint(0, 10))
        n += 1
        print('The', n, 'generation')
        yield xdata, ydata

def init():
    plt.grid()
    line.set_linestyle('None')
    ax.set_xlim(0, 20)
    ax.set_ylim(0, 20)
    return line,

def animate(data):
    line.set_data(data)
    print('data', data)
    return line,

ani = animation.FuncAnimation(fig=fig, func=animate, frames=data_gen, init_func=init, interval=200, blit=False)
ani.save('clear list.gif', writer='imagemagick')
plt.show()

Задача 1 : с момента запуска кода произошла пауза (около 10 секунд), на этапе 0 - пауза GIF может быть сохранена, однако на сохраненном GIF имеется черный флажок sh.

Задача 2 : На этапе запуска-паузы я не вижу графика на экране, после этой паузы сюжет появился, программа переходит в нормальную стадию.

Задача 3 : Я ввел код plt.grid() в функцию init. Когда код работает, я не вижу сетку на графике, однако сетку можно увидеть на сохраненном графике, почему? Если я добавлю другой код plt.grid() перед последним кодом plt.show(), в это время на графике будет показана сетка.

Может кто-нибудь сказать мне, почему это происходит?

код работает в:

  • IDE: Pycharm 2019.3.4 Professional Edition
  • Переводчик: Python 3,7
  • ОС: Windows 10

Рисунок, полученный при появлении черной тени:

Figure captured when the black shadow appears

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...