センサのデータをグラフ表示する

前回 はセンサのデータをWEBアプリで受信できることを学びました。今回は受信したデータをグラフ表示できるようにしましょう。

matplotlib

matplotlib は Python でグラフ描画するライブラリです。使い方の詳細は別途勉強してください。グラフを表示するにはグラフィック機能が必要なので、Anaconda の Jupyter Notebook を使うと便利です。下の例ではセンサデータが二次元配列に保存された前提で、matplotlib を使ってグラフに表示するまでの過程を示しています。

横軸は最初のデータが入力されてからの経過時間(秒)にしています。その計算には datetime ライブラリを使用しています。

ソースコード

グラフを作る部分の動作が確認できましたので、WEBアプリに組み込んでみましょう。

  • app.py

下のソースコードには環境に依存する部分があります。「筆者の環境(Apple Silicon Macbook)ではエラーが出るので、この2行を追加した。」の2行は不要なら削除してください。

グラフ関連およびそのデータを転送するためのライブラリが必要なので import 文が増えています。graph() はグラフの画面を表示するために存在します。plot() の中でグラフを図形データとして作成し、BytesIOライブラリを使ってブラウザに返しています。

  • index.html
{% elif page == “graph” %} の部分がグラフの画面を表示する HTML です。グラフの図形データは jQuery を使って、WEBアプリの plot() 関数から受け取っています。

テスト

プログラムを動作させ、前回やったようにシェルスクリプトからセンサデータに見立てた情報を送信します。

  • senddata.sh
ブラウザで http://localhost:5000 にアクセスして [グラフを表示する] ボタンを押すとグラフが表示されます。

コメント