pyqtgraph의 플롯에 연결할 수있는 Crosshair라는 클래스를 정의하고 싶습니다.Pyqtgraph의 십자선 클래스
class CrossHair():
def __init__(self, p1):
self.vLine = pg.InfiniteLine(angle=90, movable=False)
self.hLine = pg.InfiniteLine(angle=0, movable=False)
self.p1 = p1
self.vb = self.p1.vb
p1.addItem(self.vLine, ignoreBounds=True)
p1.addItem(self.hLine, ignoreBounds=True)
self.proxy = pg.SignalProxy(self.p1.scene().sigMouseMoved, rateLimit=60, slot=self.mouseMoved)
def mouseMoved(self, evt):
pos = evt[0] ## using signal proxy turns original arguments into a tuple
if self.p1.sceneBoundingRect().contains(pos):
mousePoint = self.vb.mapSceneToView(pos)
index = int(mousePoint.x())
# if index > 0 and index < len(data1):
# label.setText("<span style='font-size: 12pt'>x=%0.1f, <span style='color: red'>y1=%0.1f</span>, <span style='color: green'>y2=%0.1f</span>" % (mousePoint.x(), data1[index], data2[index]))
self.vLine.setPos(mousePoint.x())
self.hLine.setPos(mousePoint.y())
ch = CrossHair(p1)
이 그것을 할 올바른 방법입니다
#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("<span style='font-size: 12pt'>x=%0.1f, <span style='color: red'>y1=%0.1f</span>, <span style='color: green'>y2=%0.1f</span>" % (mousePoint.x(), data1[index], data2[index]))
vLine.setPos(mousePoint.x())
hLine.setPos(mousePoint.y())
proxy = pg.SignalProxy(p1.scene().sigMouseMoved, rateLimit=60, slot=mouseMoved)
나는 다음과 같은 클래스로 변환 시작 : 나는 예제에서 다음 코드를 발견? 즉, 십자형에 음모를 첨부하는 것이 옳은 일입니까? 나는 그 반대를하고 싶었지 만, 어떻게해야하는지 잘 모르겠다.
또한 어떻게 플롯 자체에서 데이터 값 (주석 처리 된 부분)을 검색합니까?
감사! 예제 코드 스 니펫을 게시 할 수 있습니까? – Fra