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