Python의 pyqtgraph 사용

11871 단어 Python3PyQtGraph

거치다


도표를 묘사하기 위해서는 matplotlib를 사용할 수 있지만, 실시간으로 도표를 업데이트할 때는 더욱 고속pyqtgraph를 사용하는 것이 좋다.
matplotlib도 고속 처리를 할 수 있을 것 같지만 잘 모르겠어요.

환경


python 3.7

소스 코드


각각 세 개의 데이터를 표시하고 1초 후에 데이터의 시작 요소가 사라지며 그 절차를 묘사한다.
from pyqtgraph.Qt import QtGui, QtCore
import pyqtgraph as pg
import sys

R = [255,   0,   0]
G = [  0, 255, 255]
B = [  0,   0, 255]

win = None
plt = None
data = [[1,-1,2,-2,3,-3,4,-4],[10,-10,9,-9,8,-8,7,-7],[0,1,0,2,0,3,0,4]]
curve = list()
app = QtGui.QApplication([])


def init():
    global curve
    global plt
    global win
    win = pg.GraphicsWindow()
    #windowのタイトル
    win.setWindowTitle('Window Title')
    #windowの大きさ
    win.resize(1280,800)
    #アンチエイリアスをOn
    pg.setConfigOptions(antialias=True)

    plt = win.addPlot()
    #グラフのタイトル
    plt.setTitle('<font size=\'4\' color=\'#FFFFFF\'>'+ 'plot Title' +'</font>')
    #目盛り線の設定
    plt.showGrid( True, True, 1 )

    #表示する際にグラフをどのぐらい拡大するか設定
    plt.setXRange( -20, 20 )
    plt.setYRange( -20, 20 )

    #左側に軸ラベルを設定
    label = '<font color=\'#' + 'FFFFFF'+'\'>'+ 'y' +'</font>'
    unit = '<font color=\'#' + 'FFFFFF'+'\'>' + 'cm' +'</font>'
    plt.setLabel('left', label, unit)
    #凡例を表示する
    plt.addLegend()

    tmp = 0
    #グラフを追加する
    while tmp < len(data):
        #penとnameは凡例に適応される
        curve.append(plt.plot(pen = (R[tmp],G[tmp],B[tmp]), name = ('data' + str(tmp+1)) ))
        tmp += 1


def update():
    global data
    i = 0
    if(len(data[0]) > 0):
        while i < len(data):
            curve[i].setData(data[i])
            del data[i][0]#頭から要素を消す
            i += 1


if __name__ == '__main__':
    init()

    timer = QtCore.QTimer()
    timer.timeout.connect(update)
    timer.start(1000)#ミリ秒単位

    # Start Qt event loop unless running in interactive mode or using pyside.
    if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
        QtGui.QApplication.instance().exec_()

결과



문자의 글꼴 등은 html처럼 라벨로 쓸 수 있다

좋은 웹페이지 즐겨찾기