Qiitaの記事を参照すると、FuncAnimationを用いてグラフを描画する場合、グラフの初期化を行ってから描画しています。グラフを上書きしないためには、ArtistAnimationでアニメーションを作成する場合も同じ操作をする必要があると思いました。
しかし、例えば以下のコードを実行した場合、1枚のプロット画像のみがgif画像になってしまいます。
python
1import numpy as np 2import matplotlib.pyplot as plt 3import matplotlib.animation as animation 4 5fig, ax = plt.subplots(figsize=(8, 6)) 6 7ims = [] 8 9for i in range(10): 10 plt.cla() 11 rand = np.random.randn(100) # 100個の乱数を生成 12 im = ax.plot(rand) # 乱数をグラフにする 13 ims.append(im) # グラフを配列 ims に追加 14plt.close() 15 16# 10枚のプロットを 100ms ごとに表示 17ani = animation.ArtistAnimation(fig, ims, interval=100) 18ani.save("result.gif", writer="pillow") 19Image('./result.gif', format='png')
上記のコードはgoogle colabにて確認しています。このコードで初期化を行うplt.cla() をコメントアウトした場合は10個のデータが上書きされずに正しく描画されているように見えます。なぜplt.cla()はFuncAnimationでは必要なのに、ArtistAnimationでは必要ないのでしょうか?
どなたか教えていただけると幸いです、どうぞよろしくお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/24 02:05 編集
2021/10/23 17:35
2021/10/23 21:17
2021/10/24 02:06
2021/10/24 02:50
2021/10/24 06:08
2021/10/24 10:51 編集
2021/10/25 02:49 編集
2021/10/25 03:23 編集
2021/10/26 09:06
2021/10/26 09:58 編集
2021/10/28 03:10