Я пытаюсь изучить некоторые из функций анимации Matplotlib.
Рассмотрим эту попытку попытаться нарисовать увеличение амплитуды кривых синуса и косинуса.
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
fig = plt.figure()
ims = []
x = np.linspace(0,10,20)
for i in range(60):
y1 = map (lambda t: i*np.sin(t) , x)
y2 = map (lambda t: i*np.cos(t) , x)
im1 = plt.plot(x, y1, 'bo-')
im2 = plt.plot(x, y2, 'go-')
ims.extend([im1,im2])
ani = animation.ArtistAnimation(fig, ims, interval=50, blit=True, repeat_delay=1000)
plt.show()
Это рисует для меня чередующийся набор кривых синего синуса и зеленого косинуса.Если вы попытаетесь построить их, вы увидите, что результирующий график представляет собой очень быстрый чередующийся набор изображений между синусом и косинусом.
Я знаю, что это, вероятно, ims.extend([im1,im2])
, которая является оскорбительной командой здесь.Однако, когда вместо .extend
я использовал .append()
, чтобы ims
стал списком изображений, я получаю ошибку
Traceback (most recent call last):
File "dynamic_image.py", line 29, in <module>
ani.save("movie.mp4")
File "/usr/local/lib/python2.7/dist-packages/matplotlib/animation.py", line 1254, in save
anim._init_draw()
File "/usr/local/lib/python2.7/dist-packages/matplotlib/animation.py", line 1618, in _init_draw
artist.set_visible(False)
AttributeError: 'list' object has no attribute 'set_visible'