###発生している問題
以下のコードを実行して作成したアニメーションと静止画ではカラーバーの色の変化が異なります。
静止画ではカラーバーの色の変化がグラデーションに変化するのに対して、アニメーションの場合は段階的に変化します。これはコードのどこかにミスがあるのでしょうか?
###アニメーションを作成するコード
以下のコードはGoogle Colabにて実行しました。
python
1%matplotlib inline 2import matplotlib.pyplot as plt 3import numpy as np 4import matplotlib.animation as animation 5from IPython.display import Image 6 7#結果を描画するための図の作成 8fig, ax = plt.subplots(figsize=(8, 6)) 9x, y = np.mgrid[-10:11, -10:11] 10 11#各画像を一時的に保存するためのリスト 12ims = [] 13 14#ランダムな値をxy平面にプロットした画像をfor文で100枚作成 15for i in range(0, 100): 16 z = np.random.randint(-15, 15, x.shape) 17 pcm = ax.pcolormesh(x, y, z, shading="gouraud", cmap="gray", vmin = 0, vmax = 10) 18 ims.append([pcm]) #各フレーム画像をimsに追加 19ax.set_xlabel("x", fontsize=22) 20ax.set_ylabel("y", fontsize=22) 21fig.colorbar(pcm) 22plt.close(fig) 23 24#アニメーションの作成と表示 25ani = animation.ArtistAnimation(fig, ims, interval=10) 26ani.save("result.gif", writer="pillow") 27Image('./result.gif', format='png')
gifデータを貼り付けれなかったので、スクショになりますが、次のようなカラーバーを持つgifが作成されます。
###静止画を作成するコード
python
1fig, ax = plt.subplots(figsize=(8, 6)) 2x, y = np.mgrid[-10:11, -10:11] 3z = np.random.randint(-15, 15, x.shape) 4pcm = ax.pcolormesh(x, y, z, shading="gouraud", cmap="gray", vmin = 0, vmax = 10) 5ax.set_xlabel("x", fontsize=22) 6ax.set_ylabel("y", fontsize=22) 7fig.colorbar(pcm)
###気になっていること
カラーバーに対して初期化行う、というサイトを見たのですが、何をしているのかいまいち分かりませんでした。ありえない気はしますが、for文で画像を作成しているうちにカラーバーを上書きしていった可能性はあるのでしょうか?
以上になります。どうぞよろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/16 13:10