我想弄清楚如何使用matplotlib動畫單軸上的多個元素。我可以通過以下方式使用單個元素(來自matshow
的行或圖像):https://jakevdp.github.io/blog/2012/08/18/matplotlib-animation-tutorial/,但將其擴展爲2個元素似乎不起作用。如何使用matplotlib同時動畫多個元素(matshow和line)?
我見過其他一些類似的stackoverflow問題,但我似乎得到了一個不同的問題。
這是我試過的代碼:
fig = plt.figure()
ax = plt.axes(xlim=[-0.5, np.shape(first_cadence)[0]-0.5], ylim=[-0.5, np.shape(first_cadence)[1]+0.5])
im = ax.matshow(first_cadence, animated=True)
line_pos = ax.plot(x[0], y[0], '*')
def initiate():
im.set_array(f[0,'FLUX'])
line_pos.set_data([], [])
return (im, line_pos)
def update(i):
im.set_array(f[i,'FLUX'])
line_pos.set_data([x[i]], [y[i]])
return (im, line_pos)
ani = animation.FuncAnimation(fig, update, range(0, len(f)), init_func=initiate, interval=50, blit=True)
plt.show()
我弄了半天錯誤語句整理:
AttributeError: 'list' object has no attribute 'set_data'
如果需要的話,我可以張貼整個事情。欲瞭解更多信息,x
和y
只是一維數組,所以我在每一幀繪製一個點,而不是一條線。 I.e:x = [1.21, 1.20, 1.19, 1.23, ...]
所以我不知道發生了什麼問題。我的猜測是,這與我如何使用啓動和更新功能返回元素是一回事。我以爲你應該返回一個帶有單元素版本的元組(即return line,
),那麼將其擴展到多個元素的簡單方法就是使用包含所有元素的元組。但那只是一個猜測。