はじめに

タイトルの通りなんやけど、センサデータを、キューというかFIFOみたいなのにためてグラフ表示するやつ、横にグラフが流れていくようなやつを作った。調べても、なかなか見つからなかったので、試行錯誤してみた。Jupyterやったから、なかったんかな。

環境

Jupyter 4.4.0
Python 2.7.13

あと、あんま関係ないと思うけど、ChromeOSのCrostiniでやった。

コード

こんな感じ。ランダムなデータを毎回生成してキューに追加して、それを表示する。dequeってクラス?を作るのと、表示するときのおまじない系関数がポイントなんかな。

%matplotlib inline
# Queue
from random import randint
from collections import deque

#Plot
import matplotlib.pyplot as plt
from IPython.display import display, clear_output

# Queue
num = 10
queue = deque([0]*10)

# Plot
plt.ion()
fig = plt.figure()

for i in range(num):
    # Queue
    queue.popleft()
    queue.append(np.random.rand(1))

    # Plot
    clear_output(wait = True)
    plt.cla()
    plt.plot(range(i-9,i+1),queue)
    plt.grid()
    plt.ylim(0,1)
    display(fig) 
plot_display.png

おわりに

PythonもmatplotlibもJupyterもたまに、なんとなく使う程度なので、いまいちわかってなくてそこそこ時間かかった。MATLABを普段使ってるので、それとの違いをまとめたのん探してみよかな。

参考

キュー
5. データ構造 — Python 3.6.5 ドキュメント

リスト初期化
List of zeros in python – Stack Overflow

クリア
Jupyter Notebook上でHTMLコードを使ってカウントダウンを表示する – Takala’s Memory

グラフ
matplotlibでのプロットの基本 – Qiita
matplotlibの描画の基本 | OpenBook
matplotlib によるデータ可視化の方法 (1) – Qiita

IPython
非エンジニアでも使いやすい高機能なPython環境「IPython」「Jupyter」を使ってみよう | さくらのナレッジ

广告
将在 10 秒后关闭
bannerAds