私は現在、8つのセンサーを読み込んでリアルタイムグラフをプロットするプロジェクトを作成中です。私はMatplotlibを使用しましたが、速度が遅いのでpyqtgraphに切り替えました。それは比較的速いです。私は文書を参照し、ライブデータをプロットする簡単なコードを設計しました。 私が直面している唯一の問題は、ディスクスペースとCPU使用量が大幅に増加することです.20分程度の時間を費やしています。ここに私のコードです。PyQtGraphとnumpyリアルタイムプロット
from tinkerforge.ip_connection import IPConnection
from tinkerforge.bricklet_ptc import BrickletPTC
from pyqtgraph.Qt import QtGui, QtCore
import numpy as np
import pyqtgraph as pg
win = pg.GraphicsWindow(title="Basic plotting examples")
win.resize(1280,720)
win.setWindowTitle('Live Temperature Data')
#Enable antialiasing for prettier plots
pg.setConfigOptions(antialias=True)
p1 = win.addPlot(title = 'Sensor1')
curve1 = p1.plot(pen = '#00A3E0')
p1.setLabel('left', "Temperature", units='°C')
p1.setLabel('bottom', "Time", units= 's')
p1.setDownsampling(auto=True,mode='peak')
p1.setClipToView(True)
p1.showGrid(x=True, y=True)
tempC1 = []
def updateSensor1():
global curve1, tempC1, indx1, p1
ipcon = IPConnection() # Create IP connection
ptc1 = BrickletPTC(UID1, ipcon) # S1
ipcon.connect(HOST, PORT) # Connect to brickd
temperature1 = ptc1.get_temperature()
dataArray1=str(temperature1/100).split(',')
temp1 = float(dataArray1[0])
tempC1.append(temp1)
curve1.setData(tempC1)
app.processEvents()
timer1 = QtCore.QTimer()
timer1.timeout.connect(updateSensor1)
timer1.start(1000)
if __name__ == '__main__':
import sys
if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_'):
QtGui.QApplication.instance().exec_()
私はリストがはるかに遅く、numpyは本当に速く、はるかにpyqtgraphと互換性があると聞いた。私はこのプログラミングのことを初めて勉強しているので、私はこれらの温度の読み取り値をとり、グラフをプロットする数値配列を作ることができません。私もドキュメントを参照しましたが、それは助けなかった
私は8つのセンサーがあります私は8つの異なるnumpy配列またはこれらをプロットする関数を1つの多次元配列のようなものを作成する必要があります値はリアルタイムで
誰かがリストの代わりに細かい配列を作成するのを助けることができたら、私は感謝します。
貴重なチュートリアルをありがとうございました。どういうわけか私は以前のコードをより効率的にしてくれました。唯一の問題は、リアルタイムである程度のタイムラグがあることです(時間は50秒です)。 Numpyがこのタイムラグを撲滅し、リアルタイムにするのに役立つと思いますか? また、私のプログラムをより効率的にするために、私は 'tempC1 'を試しています。pop(0) 'はカウンタが300に達したときのリストです。ポップは良好に機能しますが、x軸は0〜300のままです。リスト内の値がポップされた後でも軸がリアルタイムを表示している間にリストアイテムをポップする方法はありますか? – Ajay
リストに最大300個の値しかない場合は、リストの使用に遅れが生じるとは思わない。 x軸の問題に関する私の編集をチェックしてください。 –
それは絶対にうまく動作します。ありがとうございました.. – Ajay