That’s pretty much exactly what I wanted, thank you!
From: Patrick
Sent: Thursday, April 4, 2019 11:10 PM
To: pyqtgraph
Subject: [pyqtgraph] Re: Get data point where mouse is
Hi,
Still needs a bit of polish, but how about:
from PyQt5 import QtWidgets
import pyqtgraph as pg
import numpy as np
class TestPlot(pg.GraphicsLayoutWidget):
def __init__(self):
super().__init__()
self.curveData = np.random.rand(200)
self.plotItem = self.addPlot()
self.plotDataItem = self.plotItem.plot(self.curveData)
self.plotHighlight = pg.ScatterPlotItem(size=10, pen={"color":
"#8080ff"}, brush="#000000")
self.plotItem.addItem(self.plotHighlight, ignoreBounds=True)
self.plotLabel = pg.TextItem("X", anchor=(0.5, 1.0))
self.plotItem.addItem(self.plotLabel, ignoreBounds=True)
self.selected_x_i = 0
# Create the infinite line to indicate an x coordinate
self.crosshairx = pg.InfiniteLine(angle=90, movable=False,
pen={"color": "#8080ff"})
self.plotItem.addItem(self.crosshairx, ignoreBounds=True)
self.signalproxy = pg.SignalProxy(self.plotItem.scene().sigMouseMoved,
rateLimit=60, slot=self.mouseMoved)
def mouseMoved(self, event):
pos = event[0] ## using signal proxy turns original arguments into a
tuple
if self.plotItem.sceneBoundingRect().contains(pos):
mousePoint = self.plotItem.getViewBox().mapSceneToView(pos)
index = int(mousePoint.x())
if (index > 0 and index < self.curveData.shape[0] and
mousePoint.y() >= self.plotItem.getViewBox().viewRange()[1][0]
and
mousePoint.y() <= self.plotItem.getViewBox().viewRange()[1][1]):
#self.crosshairx.label.setFormat("{:0.2f}".format(self.curveData[index]))s
self.crosshairx.setPos(mousePoint.x())
self.plotHighlight.setData([index], [self.curveData[index]])
self.plotLabel.setPos(index, self.curveData[index])
self.plotLabel.setText("{:0.2g}".format(self.curveData[index]))
else:
# Could proably hide the crosshair in better way...
self.crosshairx.setPos(self.plotItem.getViewBox().viewRange()[0][0] - 1)
self.plotHighlight.clear()
self.plotLabel.setText("")
def main():
import sys
app = QtWidgets.QApplication(sys.argv)
mainwindow = TestPlot()
mainwindow.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
Patrick
On Friday, 5 April 2019 01:44:18 UTC+10:30, Bobby Lucero wrote:
The image above is an example of what i'd like to do
Hello, i'd like to get the data at a certain point where my mouse is hovered
over the graph. I'm trying to get the circle to hover over the data point where
the mouse is, as demonstrated in the screenshot. I already have code to track
the mouses position, I just have no idea to get the actual plot data where the
mouse is.
Any help would be greatly appreciated.
--
You received this message because you are subscribed to the Google Groups
"pyqtgraph" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/pyqtgraph/deddfe62-8d22-4d7e-ac5e-f4ac7b364d48%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups
"pyqtgraph" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/pyqtgraph/5ca8dbf7.1c69fb81.471a3.7af8%40mx.google.com.
For more options, visit https://groups.google.com/d/optout.