6
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Jupyterを使って1サンプルずつ更新されるデータをリアルタイムでグラフ表示する

Last updated at Posted at 2018-12-23

はじめに

タイトルの通りなんやけど、センサデータを、キューというか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」を使ってみよう | さくらのナレッジ

6
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?