📜  PyQtGraph - 条形图的比例变化信号(1)

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

PyQtGraph - 条形图的比例变化信号

PyQtGraph是一个用于Python和Qt的绘图和数据可视化库。 它提供了能够快速创建高性能,交互式图形的各种工具,包括2D图形,图像处理,3D渲染和科学计算。本文介绍如何使用PyQtGraph创建一个条形图,并利用比例变化信号实现交互功能。

创建一个简单的条形图

我们首先需要引入PyQtGraph库并创建一个条形图对象,然后设置数据和绘制参数。

import pyqtgraph as pg

# 创建条形图
barGraph = pg.BarGraphItem(x=[1,2,3,4,5], height=[10,30,5,20,5], width=0.5, brush='b')

# 创建绘图窗口和图像视图
win = pg.GraphicsWindow()
view = win.addViewBox()

# 添加条形图到画布上
view.addItem(barGraph)

在上面的代码中,我们定义了一个简单的条形图。我们提供了一个x轴的列表和另一个对应的高度列表,以及条形图的宽度和颜色。同时,我们创建了一个绘图窗口和图像视图对象,并将条形图添加到画布上。

创建比例变化信号

PyQtGraph提供了一个名为SigDraggableLine的小部件,该部件可以添加到图形视图中,并在鼠标拖动时触发函数回调。我们可以使用这个部件来实现交互的比例变化:

# 创建一个垂直的线条变化信号对象
vLine = pg.InfiniteLine(angle=90, movable=True, label="{value:.1f}")
view.addItem(vLine)

# 在条形图添加比例变化信号
barGraph.sigBarsClicked.connect(lambda x: vLine.setValue(x[0]))

在上面的代码中,我们创建了一个名为vLine的无限线部件,该部件可以通过鼠标拖动来更改其位置。我们还将其添加到图形视图中。然后,我们连接了条形图的sigBarsClicked信号到一个lambda函数中,该函数将垂直线部件的值设置为被单击的条形图元素的位置。

完整代码

这是完整的Python代码实现:

import pyqtgraph as pg

# 创建条形图
barGraph = pg.BarGraphItem(x=[1,2,3,4,5], height=[10,30,5,20,5], width=0.5, brush='b')

# 创建绘图窗口和图像视图
win = pg.GraphicsWindow()
view = win.addViewBox()

# 添加条形图到画布上
view.addItem(barGraph)

# 创建一个垂直的线条变化信号对象
vLine = pg.InfiniteLine(angle=90, movable=True, label="{value:.1f}")
view.addItem(vLine)

# 在条形图添加比例变化信号
barGraph.sigBarsClicked.connect(lambda x: vLine.setValue(x[0]))

if __name__ == '__main__':
    import sys
    if (sys.flags.interactive != 1) or not hasattr(pg.QtCore, 'PYQT_VERSION'):
        pg.QtGui.QApplication.exec_()

在运行该脚本时,将会展示一个包含条形图的绘图窗口,鼠标拖动条形图的单个矩形即可改变垂直线部件的位置。