📜  PyQtGraph - 获取条形图的工具提示(1)

📅  最后修改于: 2023-12-03 15:33:55.272000             🧑  作者: Mango

PyQtGraph - 获取条形图的工具提示

PyQtGraph 是一个使用 Python 编写的交互式图形库,主要使用了 PyQt5/PySide2 库作为 GUI 后端。它是为了更好地可视化实时数据而设计的,可以将数据显示为 2D 或 3D 线条、条形图、图像等形式。本文将介绍如何使用 PyQtGraph 给条形图添加工具提示。

1. 安装 PyQtGraph

安装 PyQtGraph 可以使用 pip 命令:

pip install pyqtgraph
2. 创建条形图

在开始添加工具提示之前,我们需要先创建一个简单的条形图。以下是创建一个简单条形图的代码:

from pyqtgraph.Qt import QtGui, QtCore
import pyqtgraph as pg
import random
 
app = QtGui.QApplication([])
win = pg.GraphicsWindow(title="Basic plotting examples")
win.resize(800, 600)
win.setWindowTitle('pyqtgraph example: Plotting')

x = ['A', 'B', 'C', 'D', 'E']
y = [1, 5, 3, 6, 2]

p1 = win.addPlot(title="Simple bar graph")
p1.setLabel('left', 'Value', units='y')
p1.setLabel('bottom', 'Letter')
p1.setXRange(0, len(x))
 
bg1 = pg.BarGraphItem(x=x, height=y, width=0.4, brush='r')
p1.addItem(bg1)
 
win.show()

这里我们创建了一个5个柱子的条形图,每个柱子代表一个字母。在实际应用中,你可以使用任何数据,因为在这个例子中,关键是我们想要为每个柱子添加一个工具提示。

3. 添加工具提示

要添加工具提示,我们需要为每个柱子添加事件处理程序,让它们能够在鼠标悬停或单击时发出信号。以下是一个辅助函数,它为每个 BarGraphItem 创建一个鼠标进入/退出/单击事件处理程序:

def createBarItem(bar, tooltip=None):
 
    def mouseMoved(evt):
        if bar.sceneBoundingRect().contains(evt):
            mousePoint = bar.mapFromScene(evt)
            index = int(mousePoint.x())
            if index > 0 and index < len(x):
               bar.setToolTip(tooltip[index])
 
    bar.hoverEvent = mouseMoved
 
    return bar

注意,这个函数使用 BarGraphItem 的 hoverEvent 方法注册了一个事件处理程序。这个处理程序检查鼠标事件点是否在 BarGraphItem 范围内,并设置工具提示(ToolTip)的文字。

现在,让我们来更新代码来为每个柱子添加事件处理程序以及相应的工具提示,这里我们为每个柱子添加了一个简单的数字工具提示:

bg1 = pg.BarGraphItem(x=x, height=y, width=0.4, brush='r')
p1.addItem(createBarItem(bg1, [str(i) for i in y]))
4. 运行程序

运行代码,当你将鼠标悬停在每个柱子上时,会显示该柱子的值。

tooltip_demo

这就是如何为 PyQtGraph 条形图添加工具提示的方法。除了数字之外,你也可以为每个柱子添加其他类型的工具提示,如文本或图像。

返回的markdown格式:

PyQtGraph - 获取条形图的工具提示

PyQtGraph 是一个使用 Python 编写的交互式图形库,主要使用了 PyQt5/PySide2 库作为 GUI 后端。它是为了更好地可视化实时数据而设计的,可以将数据显示为 2D 或 3D 线条、条形图、图像等形式。本文将介绍如何使用 PyQtGraph 给条形图添加工具提示。

1. 安装 PyQtGraph

安装 PyQtGraph 可以使用 pip 命令:

pip install pyqtgraph
2. 创建条形图

在开始添加工具提示之前,我们需要先创建一个简单的条形图。以下是创建一个简单条形图的代码:

from pyqtgraph.Qt import QtGui, QtCore
import pyqtgraph as pg
import random
 
app = QtGui.QApplication([])
win = pg.GraphicsWindow(title="Basic plotting examples")
win.resize(800, 600)
win.setWindowTitle('pyqtgraph example: Plotting')

x = ['A', 'B', 'C', 'D', 'E']
y = [1, 5, 3, 6, 2]

p1 = win.addPlot(title="Simple bar graph")
p1.setLabel('left', 'Value', units='y')
p1.setLabel('bottom', 'Letter')
p1.setXRange(0, len(x))
 
bg1 = pg.BarGraphItem(x=x, height=y, width=0.4, brush='r')
p1.addItem(bg1)
 
win.show()

这里我们创建了一个5个柱子的条形图,每个柱子代表一个字母。在实际应用中,你可以使用任何数据,因为在这个例子中,关键是我们想要为每个柱子添加一个工具提示。

3. 添加工具提示

要添加工具提示,我们需要为每个柱子添加事件处理程序,让它们能够在鼠标悬停或单击时发出信号。以下是一个辅助函数,它为每个 BarGraphItem 创建一个鼠标进入/退出/单击事件处理程序:

def createBarItem(bar, tooltip=None):
 
    def mouseMoved(evt):
        if bar.sceneBoundingRect().contains(evt):
            mousePoint = bar.mapFromScene(evt)
            index = int(mousePoint.x())
            if index > 0 and index < len(x):
               bar.setToolTip(tooltip[index])
 
    bar.hoverEvent = mouseMoved
 
    return bar

注意,这个函数使用 BarGraphItem 的 hoverEvent 方法注册了一个事件处理程序。这个处理程序检查鼠标事件点是否在 BarGraphItem 范围内,并设置工具提示(ToolTip)的文字。

现在,让我们来更新代码来为每个柱子添加事件处理程序以及相应的工具提示,这里我们为每个柱子添加了一个简单的数字工具提示:

bg1 = pg.BarGraphItem(x=x, height=y, width=0.4, brush='r')
p1.addItem(createBarItem(bg1, [str(i) for i in y]))
4. 运行程序

运行代码,当你将鼠标悬停在每个柱子上时,会显示该柱子的值。

tooltip_demo

这就是如何为 PyQtGraph 条形图添加工具提示的方法。除了数字之外,你也可以为每个柱子添加其他类型的工具提示,如文本或图像。