私は、matplotlibを使って複数の要素を単一の軸にアニメーション化する方法を解明しようとしています。 https://jakevdp.github.io/blog/2012/08/18/matplotlib-animation-tutorial/のように1つの要素(行または画像のいずれか)を使用することができますが、2つの要素に拡張することは機能していないようです。matplotlibを使って複数の要素(matshowとline)を同時にアニメーション化するには?
私はいくつかの同様のスタックオーバーフローの質問を見ましたが、私は別の問題を抱えているようです。
ここで私が試したコードは次のとおりです。
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
はちょうど1Dの配列なので、私はラインではなく各フレームに単一の点をプロットしています。私は:x = [1.21, 1.20, 1.19, 1.23, ...]
私は間違っているか分からない。私の推測では、イニシャライズ機能と更新機能でどのように要素を返すのか、それは何かです。私はあなたが単一の要素のバージョン(つまりreturn line,
)でタプルを返すことになっているので、それを複数の要素に拡張する簡単な方法はすべての要素を含むタプルであると考えました。しかしそれはちょうど推測でした。