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 pyqtgraph+unsubscr...@googlegroups.com.
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 pyqtgraph+unsubscr...@googlegroups.com.
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.

Reply via email to