みなさん、こんにちは 。
みむすたーです。
この記事では、
センサーで読み取った温度や湿度などの時系列のデータを折れ線グラフで表したい!
というお悩みを解決します。
今回は、pythonの描画ライブラリであるmatplotlibを使って、
時系列の折れ線グラフを描いていきます。
既に取得済みの静的なデータの折れ線グラフと、
リアルタイムに変化する動的なデータの折れ線グラフの二つの描き方を説明します。
それでは、いきましょう。
もくじ
静的なデータの折れ線グラフ
今回は、年間の月別平均気温データを使用して、
静的なデータの折れ線グラフを描画させます。
サンプルプログラム
%matplotlib inline
import matplotlib.pyplot as plt
# 月
x = [1,2,3,4,5,6,7,8,9,10,11,12]
# 月ごとの平均気温データ
y = [6.5,7.8,10.6,14.6,21.0,23.7,26.5,29.1,26.6,20.7,14.2,9.5]
# 平均気温データ表示
fig = plt.figure()
subplot = fig.add_subplot(1,1,1)
subplot.plot(x,y)
plt.show()
サンプルプログラムの説明
x, yの配列で使用した年間の月別平均気温データは、以下のページから取得しました。
気象庁 – 観測開始からの毎月の値 –
http://www.data.jma.go.jp/obd/stats/etrn/view/monthly_s3.php?prec_no=62&block_no=47772
plt.figure()は、
白い無地のキャンバスを用意するという意味です。
fig.add_subplot(1,1,1)は、
白い無地のキャンバスに1×1の描画領域を追加するという意味です。
subplotsubplot.plot(x,y)は、
x,yのグラフを描画するという意味です。
plt.show()は、
実際にグラフを表示するという意味です。
サンプルプログラムの動作
上のサンプルプログラムを実行した結果、
以下のようなグラフが表示されます。
動的なデータの折れ線グラフ
今回は、ランダムな値を使用して、
動的なデータの折れ線グラフを描画させます。
サンプルプログラム
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
# 無地のキャンバスを作成する
fig = plt.figure()
# yの配列を作成する
y = []
def AnimationUpdater(frame):
# 表示されているグラフをリセット
plt.cla()
# 100個以上のデータは削除する (FIFO)
if len(y) >= 100:
# 配列の先頭を削除
del y[0]
# ランダムに値を一つ生成する
rnd = np.random.randn(1)
y.append(rnd)
# yのグラフを表示
plt.plot(y)
# アニメーション作成
ani = animation.FuncAnimation(fig,AnimationUpdater, interval=50)
plt.show()
サンプルプログラムの説明
y = []は、
空の配列データを作成します。
def AnimationUpdater():は、
アニメーションの1フレームごとに呼ばれる関数です。
関数内の内容は、基本的にはコメント文に書いた通りです。
yのデータの数が100個以上になれば、古い順のデータから削除していきます。
animationFunAnimation(fig,AnimationUpdater, interval=50)は、
50ms間隔で、AnimationUpdaterを呼ぶように設定しています。
plt.show()は、
グラフを描画することを意味します。
コメント