Posted at

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

More than 1 year has passed since last update.


はじめに

私はpython触り始めて数ヶ月のペーペーです。なのでその書き方おかしいだろ!みたいなとこも多々あると思いますが、よろしくお願い申し上げます。

とりあえず、備忘録代わりに躓いたところを書きます。


環境

python 3.6.2

matplotlib 2.1.0


躓いたとこ

ラズパイにセンサーつけてリアルタイムにグラフ見ようと思ったのがきっかけです。

色々と参考にしてとりあえずion()とかdrow()でインタラクティブモードにしたら出来るんだなと思い

サンプルを動かすもmatplotlibが固まる・・


解決策

参考にしたところを忘れてしまった。。

とりあえずサンプルを。。


realtimeplottest.py

# -*- coding: utf-8 -*-


from matplotlib import pyplot as plt
import math

times = [0 for i in range(100)]
sinxs = [0 for i in range(100)]

time = 0
sinx = 0

# initialize matplotlib
plt.ion()
plt.figure()
li, = plt.plot(times, sinxs)

plt.ylim(-1,1)
plt.xlabel("time")
plt.ylabel("sin")
plt.title("sin real time plot")

while 1 :

time += 0.1
sinx = math.sin(time)

times.append(time)
times.pop(0)
sinxs.append(sinx)
sinxs.pop(0)

li.set_xdata(times)
li.set_ydata(sinxs)
plt.xlim(min(times), max(times))
plt.draw()

plt.pause(0.01)


最後のplt.pause()を入れることが重要だったみたいです。