matplotlibのfuncAnimationクラスを使ってプロットをアニメーション化する方法を学びたいと思います。この例では、無作為に分布した正規分布の2次元散布図を生成し、点を更新するたびにプロットにポイントを追加して(ポイントをアニメーション表示する)例コードは次のとおりです。Matplotlib funcAnimationはプロットを開いたり表示したりしません
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import random
plt.ion()
fig, ax = plt.subplots()
scat = ax.scatter([],[])
scat.axes.axis([-5, 5, -5, 5])
def update(point):
array = scat.get_offsets()
array = np.append(array, point)
scat.set_offsets(array)
return scat
def data_gen():
for _ in range(0,100):
point = np.random.normal(0, 1, 2)
yield point
ani = animation.FuncAnimation(fig, update, data_gen, interval=25, blit=False)
plt.show()
このコードを実行すると、何も起こりません。端末は数秒間騒がしくなり、何も起こりません。
私はこれを私のガイドとして使用しています:http://matplotlib.org/examples/animation/animate_decay.html、散布図の代わりにラインプロットを使用した場合(本質的に、この例のジェネレータでポイントがどのように生成されるかを置き換えたもの)データを生成してプロットを更新します。しかし、私が望むディスプレイではないので、散布図に現れる点を見たいと思っています。散布図を使用するには、散布図の有効な方法ではないので、set_dataを使用しないでください。この例で見たnp.append()メソッドを使用しています: Dynamically updating plot in matplotlib
私の質問は、このコードではアニメーションが表示されない原因となっていますか?
EDIT: はmywriter = animation.FFMpegWriter(FPSは= 60) ani.save( 'myanimation.mp4'、作家= mywriter) それが作り出すん:私はちょうど私が追加した場合ことが判明/試してみましたアニメーションを含むmp4、私はちょうどコードが実行されているように動的に表示することができません。だからあなたがそれを診断できるなら、その問題に集中してください。ありがとう。
'plt.ion()'行だけを削除すれば、コードはうまく動作します。あなたは何のためにそれを必要としますか?通常、 'ion()'はipythonでプロットするときにのみ使用され、あなたが望むものであれば分かりません。 – ImportanceOfBeingErnest
ありがとう!私はサンプルコードを見ていただけで、すべてのことができました。私はそれがアニメーションに必要だと思った。それはそれを修正! – Zach