Start_python’s diary

ふたり暮らし

アラフィフ夫婦のフリーランスプラン

棒グラフのアニメーションを作成する(Python matplotlibの使い方)

f:id:Start_python:20200114162359g:plain

はじめに

matplotlibモジュールの基本的な使い方を勉強します。「animation.FuncAnimation」を使ってサイコロの出た目の合計回数を棒グラフで表します。

 

棒グラフの表示だけならこちらです。

f:id:Start_python:20200114163057p:plain

※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学習もどきを利用して株価予想が可能なのかグラフで可視化したかったためです。

f:id:Start_python:20200115152136g:plain

こちらは過去の株価データからある2つの条件から翌日に株価が上がったときは青色、下がったときは赤色のグラフです。青色と赤色の差が大きいところは予想しやすいことになります。

次回は3Dグラフについて詳しく解説したいと思います。