У меня есть существующая функция, которую я использую для построения графика, которую я постоянно вызываю в своей программе. Я хочу использовать matplotlib
s ArtistAnimation
, чтобы сохранить каждый сюжет как «художник», который показан на одном этапе анимации.
Я знаю, как использовать ArtistAnimation
для отображения отдельных элементов сюжет в анимации, но не весь сюжет.
Вот упрощенный пример:
import random
def my_plot():
fig, ax = plt.subplots()
ax.plot([random.randrange(10), random.randrange(10)], [random.randrange(10), random.randrange(10)])
ax.plot([random.randrange(10), random.randrange(10)], [random.randrange(10), random.randrange(10)])
plt.show()
return ax
ims = []
fig = plt.figure()
for _ in range(5):
ax = my_plot()
ims.append((ax,))
ani = animation.ArtistAnimation(fig, ims, repeat=False)
ani.save('im.mp4', metadata={'artist':'Guido'})
Это выполняется без ошибок, но полученное видео остается пустым. То же самое произойдет, если я верну список художников, созданных ax.plot()
.
. Я предполагаю, что проблема в том, что я звоню plt.figure
/ plt.subfigure
несколько раз. Но я не знаю, как этого избежать. Нужно ли мне создавать одну фигуру и передавать ее каждому вызову my_plot
? Выглядит немного некрасиво.