PyQtGraph - 在折线图中获取线的光标
在本文中,我们将看到如何在 PyQtGraph 模块中获得线图的自定义光标。 PyQtGraph 是一个用于Python的图形和用户界面库,它提供了设计和科学应用程序中通常需要的功能。其主要目标是提供用于显示数据(绘图、视频等)的快速交互式图形。折线图或折线图或折线图或曲线图是一种将信息显示为一系列称为“标记”的数据点的图表' 由直线段连接。它是许多领域中常见的一种基本类型的图表。线图是在 PyQtGraph 中绘图类的帮助下创建的。光标是一个指示器,用于在计算机显示器或其他显示设备上显示用户交互的当前位置,这些设备将响应来自文本输入或定点设备的输入。鼠标光标也被称为指针,因为它的用法类似于指点杆。它可以在 setCursor 方法的帮助下进行设置。
我们可以在下面给出的命令的帮助下创建一个绘图窗口并在其上创建线条。
# creating a pyqtgraph plot window
plt = pg.plot()
# ploting line in green color
# with dot symbol as x, not a mandatory field
line = plt.plot(x, y, pen='g', symbol='x', symbolPen='g',
symbolBrush=0.2, name='green')
In order to do this we use cursor method with the line object
Syntax : line.cursor()
Argument : It takes no argument
Return : It returns QCursor object
下面是实现。
Python3
# importing Qt widgets
from PyQt5.QtWidgets import *
import sys
# importing pyqtgraph as pg
import pyqtgraph as pg
from PyQt5.QtGui import *
from PyQt5.QtCore import Qt
# Bar Graph class
class BarGraphItem(pg.BarGraphItem):
# constructor which inherit original
# BarGraphItem
def __init__(self, *args, **kwargs):
pg.BarGraphItem.__init__(self, *args, **kwargs)
# creating a mouse double click event
def mouseDoubleClickEvent(self, e):
# setting scale
self.setScale(0.2)
class Window(QMainWindow):
def __init__(self):
super().__init__()
# setting title
self.setWindowTitle("PyQtGraph")
# setting geometry
self.setGeometry(100, 100, 600, 500)
# icon
icon = QIcon("skin.png")
# setting icon to the window
self.setWindowIcon(icon)
# calling method
self.UiComponents()
# showing all the widgets
self.show()
# method for components
def UiComponents(self):
# creating a widget object
widget = QWidget()
# creating a new label
label = QLabel("GeeksforGeeks Line Plot")
# making it multiline
label.setWordWrap(True)
# y values to plot by line 1
y = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# y values to plot by line 2
y2 = [3, 1, 5, 8, 9, 11, 16, 17, 14, 16]
x = range(0, 10)
# create plot window object
plt = pg.plot()
# showing x and y grids
plt.showGrid(x=True, y=True)
# adding legend
plt.addLegend()
# set properties of the label for y axis
plt.setLabel('left', 'Vertical Values', units='y')
# set properties of the label for x axis
plt.setLabel('bottom', 'Horizontal Values', units='s')
# setting horizontal range
plt.setXRange(0, 20)
# setting vertical range
plt.setYRange(0, 20)
# ploting line in green color
# with dot symbol as x, not a mandatory field
line1 = plt.plot(x, y, pen='g', symbol='x',
symbolPen='g', symbolBrush=0.2, name='green')
# ploting line2 with blue color
# with dot symbol as o
line2 = plt.plot(x, y2, pen='b', symbol='o',
symbolPen='b', symbolBrush=0.2, name='blue')
# creating a cursor
cursor = Qt.PointingHandCursor
# setting cursor to the line1
line1.setCursor(cursor)
# getting cursor of line 1
value = line1.cursor()
# setting text to the label
label.setText("Cursor : " + str(value))
# label minimum width
label.setMinimumWidth(120)
# Creating a grid layout
layout = QGridLayout()
# setting this layout to the widget
widget.setLayout(layout)
# adding label to the layout
layout.addWidget(label, 1, 0)
# plot window goes on right side, spanning 3 rows
layout.addWidget(plt, 0, 1, 3, 1)
# setting this widget as central widget of
# the main widow
self.setCentralWidget(widget)
# create pyqt5 app
App = QApplication(sys.argv)
# create the instance of our Window
window = Window()
# start the app
sys.exit(App.exec())
输出: