python リアルタイムグラフ x軸の幅を一定にする

スポンサーリンク

はじめに

matplotlib を用いてグラフをリアルタイムで動かしてみる。

目次

環境

mac
python 3.6.6

リアルタイムグラフではplt.draw()もplt.show()も上手く描写出来ない

matplotlibを使用してグラフを描写するときはだいたいplt.draw()とか
plt.show()とかを使うけど、リアルタイムで動かしたいときは上手く描写できない。

plt.show()は一枚ごとグラフが表示される。
plt.draw()は描画がはじまらない。

リアルタイムではplt.pause(time)を用いるといい。
plt.pause()の引数は描画間隔。秒単位。

コード

コードは以下の通り。今回はランダムでデータを生成。

import numpy as np
from matplotlib import pyplot as plt
import random

plt.figure()
#x軸の幅を100にする
xlim = [0, 100]
X, Y = [], []

while True:
        #画面をクリア
        plt.cla()
        Y.append(random.random())
        X.append(len(Y))
        #xに100個以上格納されたら
        if len(X) > 100:
                xlim[0] += 1
                xlim[1] += 1

        plt.plot(X, Y)
        #x軸、y軸方向の表示範囲を設定
        plt.ylim(-1, 2)
        plt.xlim(xlim[0], xlim[1])
        #描写
        plt.pause(0.1)

結果

ちゃんとx軸が一定で動いている。

f:id:shangtian:20190903204055g:plain

参考文献

python3でリアルタイムプロット - Qiita

Matplotlibで、動くプロットをした。: 長続き目指しブログ

Arduino で測定したデータを Matplotlib でリアルタイムプロット | org-技術