Я столкнулся с несколькими проблемами, когда пытался создать 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
Рисунок, полученный при появлении черной тени: