棒グラフのアニメーションを作成する(Python matplotlibの使い方)
はじめに
matplotlibモジュールの基本的な使い方を勉強します。「animation.FuncAnimation」を使ってサイコロの出た目の合計回数を棒グラフで表します。
棒グラフの表示だけならこちらです。
※jupyter notebookでグラフを表示する場合は、「%matplotlib nbagg」を最初に入れます。
プログラムのコード
import random import numpy as np import matplotlib.pyplot as plt import matplotlib.animation as animation fig, ax = plt.subplots() x = [1, 2, 3, 4, 5, 6] y = [0,0,0,0,0,0] def update(i): plt.cla() rand = random.randint(0, 5) y[rand] += 1 ax.bar(x,y) plt.title('i=' + str(i) + ' [ ' + str(rand+1) + ' ]') if np.max(y) <100: plt.ylim(0, 100) ani = animation.FuncAnimation(fig, update, interval = 100) plt.show()
解説
ani = animation.FuncAnimation(fig, update, interval = 100)
update関数「def update(i):」を100ミリ秒毎に呼び出して実行します。
plt.cla()
グラフを一度削除します。
rand = random.randint(0, 5)
y[rand] += 1
ax.bar(x,y)
rand番目の「y」に1を足します。棒グラフの定義をします。
plt.title('i=' + str(i) + ' [ ' + str(rand+1) + ' ]')
グラフのタイトル名です。
if np.max(y) <100:
plt.ylim(0, 100)
最大の「y」が100より小さいときは、y軸は0~100に固定します。
省略(指示しない)の場合はy軸は自動で変わります。
plt.show()
グラフを表示します。
まとめ
グラフのアニメーションをやってみようと思ったきっかけは、Q学習もどきを利用して株価予想が可能なのかグラフで可視化したかったためです。
こちらは過去の株価データからある2つの条件から翌日に株価が上がったときは青色、下がったときは赤色のグラフです。青色と赤色の差が大きいところは予想しやすいことになります。
次回は3Dグラフについて詳しく解説したいと思います。