1#!/usr/bin/python 2 3import initExample ## Add path to library (just for examples; you do not need this) 4from pyqtgraph.Qt import QtGui, QtCore 5import numpy as np 6import pyqtgraph as pg 7from time import perf_counter 8 9app = pg.mkQApp("Infinite Line Performance") 10 11p = pg.plot() 12p.setWindowTitle('pyqtgraph performance: InfiniteLine') 13p.setRange(QtCore.QRectF(0, -10, 5000, 20)) 14p.setLabel('bottom', 'Index', units='B') 15curve = p.plot() 16 17# Add a large number of horizontal InfiniteLine to plot 18for i in range(100): 19 line = pg.InfiniteLine(pos=np.random.randint(5000), movable=True) 20 p.addItem(line) 21 22data = np.random.normal(size=(50, 5000)) 23ptr = 0 24lastTime = perf_counter() 25fps = None 26 27 28def update(): 29 global curve, data, ptr, p, lastTime, fps 30 curve.setData(data[ptr % 10]) 31 ptr += 1 32 now = perf_counter() 33 dt = now - lastTime 34 lastTime = now 35 if fps is None: 36 fps = 1.0/dt 37 else: 38 s = np.clip(dt*3., 0, 1) 39 fps = fps * (1-s) + (1.0/dt) * s 40 p.setTitle('%0.2f fps' % fps) 41 app.processEvents() # force complete redraw for every plot 42 43 44timer = QtCore.QTimer() 45timer.timeout.connect(update) 46timer.start(0) 47 48if __name__ == '__main__': 49 pg.exec() 50