From 33b09dfa235fab6bc2e0b3548d463f67fbf6a93d Mon Sep 17 00:00:00 2001 From: Luke Campagnola <> Date: Tue, 3 Apr 2012 01:11:39 -0400 Subject: [PATCH] Added crosshair example --- examples/crosshair.py | 55 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 examples/crosshair.py diff --git a/examples/crosshair.py b/examples/crosshair.py new file mode 100644 index 00000000..13c70029 --- /dev/null +++ b/examples/crosshair.py @@ -0,0 +1,55 @@ +import initExample ## Add path to library (just for examples; you do not need this) +import numpy as np +import pyqtgraph as pg +from pyqtgraph.Qt import QtGui, QtCore +from pyqtgraph.Point import Point + +#genearte layout +app = QtGui.QApplication([]) +win = pg.GraphicsWindow() +label = pg.LabelItem(justify='right') +win.addItem(label) +p1 = win.addPlot(row=1, col=0) +p2 = win.addPlot(row=2, col=0) +region = pg.LinearRegionItem() +region.setZValue(10) +p2.addItem(region) + +#create numpy arrays +#make the numbers large to show that the xrange shows data from 10000 to all the way 0 +data1 = 10000 + 3000 * np.random.random(size=10000) +data2 = 15000 + 3000 * np.random.random(size=10000) + +p1.plot(data1, pen="r") +p1.plot(data2, pen="g") +p2.plot(data1, pen="w") + +def update(): + p1.setXRange(*region.getRegion()) +region.sigRegionChanged.connect(update) +region.setRegion([1000, 2000]) + +#cross hair +vLine = pg.InfiniteLine(angle=90, movable=False) +hLine = pg.InfiniteLine(angle=0, movable=False) +p1.addItem(vLine, ignoreBounds=True) +p1.addItem(hLine, ignoreBounds=True) +vb = p1.vb + +def mouseMoved(evt): + pos = evt[0] ## using signal proxy turns original arguments into a tuple + if p1.sceneBoundingRect().contains(pos): + mousePoint = vb.mapSceneToView(pos) + index = int(mousePoint.x()) + if index > 0 and index < len(data1): + label.setText("x=%0.1f, y1=%0.1f, y2=%0.1f" % (mousePoint.x(), data1[index], data2[index])) + vLine.setPos(mousePoint.x()) + hLine.setPos(mousePoint.y()) +proxy = pg.SignalProxy(p1.scene().sigMouseMoved, rateLimit=60, slot=mouseMoved) +#p1.scene().sigMouseMoved.connect(mouseMoved) + + +## Start Qt event loop unless running in interactive mode or using pyside. +import sys +if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'): + app.exec_() \ No newline at end of file