私はmatplotlibが新しく、アニメーションの仕組みを理解しようとしています。pyplotの矩形のアニメーション最初の矩形が表示される
私は長方形の周りに移動するには、次のPythonコードを書いた:
import matplotlib.pyplot as plt
import matplotlib.animation as animation
class AnimRect(object):
'''Animate a rectangle'''
def __init__(self):
self.fig = plt.figure(figsize = (5,5))
# create the axes
self.ax = plt.axes(xlim=(0,100), ylim=(0,100), aspect='equal')
# create rectangle
self.rect = plt.Rectangle((70,20), 10, 10,
fill=True, color='gold', ec='blue')
self.ax.add_patch(self.rect)
# initialization function
def init(self):
self.rect.set_xy((10.0, 10.0))
return self.rect,
# animation function
def animate(self, i):
self.rect.set_xy((i,i))
return self.rect,
def call_animation(self):
# call the animator function
animation.FuncAnimation(self.fig, self.animate, frames=91,
init_func= self.init,
interval=20, blit=True, repeat=False)
plt.show()
def main():
rect = AnimRect()
rect.call_animation()
main()
私は、コードを実行するとしながら、初期位置(10.0,10.0)に設定された矩形が常に、画面上にとどまりますアニメーション矩形は期待どおりに動作します。私は理由を理解できません。私はいくつかの小さな変更を試みましたが、解決策を見つけることができませんでした。私は間違って何をしていますか?
それが問題を解決しました。 initメソッドを使用したソリューションは、blitがTrueまたはFalseのme(Anaconda Python 3.4 for Windows)で動作します。 2番目の解決方法では、blitをFalseに設定する必要があります。 – JFC
よかった、うれしく思った。 'blit'は変更された要素を最初に' delete'しなければならないので、 'blit'は2番目のケースでFalseに設定する必要があります。 'init'メソッドがなければ、削除する要素はなく、エラーをスローします。 –