【PyQt5-Qt Designer】在GUI中使用pyqtgraph绘图库
pyqtgraph绘图库
1.1 简介:
pyqtgraph是Python平台上一种功能强大的2D/3D绘图库,相对于matplotlib库,由于内部实现方式上,使用了高速计算的numpy信号处理库以及Qt的GraphicsView框架,
因此,它在大数据量的数字处理和快速显示方面有着巨大的优势,它适合于需要快速绘图更新、视频或实时交互性的操作场合。
另外,它不仅为各种数据提供了快速可交互式的图形显示,同时也提供了用于快速开发应用程序的各种小工具,如属性树、流程图等小部件,在数学、科学和工程领域都有着广泛的应用。
在PyQt的应用程序中集成图绘功能,有很多种方案,比如:
-
OpenGL:一个功能强大的二维三维专业图形绘制工具;
-
Matplotlib:Python中很经典的图形绘制模块;
-
PyQtGraph:基于Qt平台,提供交互的数据显示图形绘制。
各种图形绘制方案都有自己的优点,但是论与PyQt程序的融合度,还是当属PyQtGraph。
pyqtgraph的核心特征是:
-
基本的2D交互视图中框绘制
-
线和散点图
-
数据可平移/缩放鼠标
-
实时数据的显示和交互的快速绘制
-
图像显示与互动的查找表和电平控制
-
显示所有数据类型(int或float;任何比特深度;RGB,RGBA,或亮度)
-
切片的多维图像任意角度的函数
-
快速更新的视频显示和实时交互
-
三维图形系统(需要Python OpenGL绑定)
-
体积数据的渲染
-
三维表面和散点图
-
网格的等值面生成渲染
-
交互式视口旋转/缩放鼠标
-
更容易编程的基本的3D场景图
-
数据选择/标记和感兴趣的控制区
-
交互标记垂直/水平的地块的位置和区域
-
从图像中选择任意区域的部件和自动切片数据匹配
1.2 例子
PyQtGraph包含一系列可通过运行来访问的示例:
import pyqtgraph.examples
pyqtgraph.examples.run()
二、鼠标交互
大多数使用pyqtgraph数据可视化的应用程序都会生成可交互缩放,平移和使用鼠标配置的小部件。 本节介绍鼠标与这些小部件的交互。
2.1二维图形
在pyqtgraph中,大多数2D可视化遵循以下鼠标交互:
- 左键:与场景中的项目交互(选择/移动对象等)。 如果鼠标光标下没有可移动的物体,那么用左边的按钮拖动就会平移场景。
- 右键拖动:缩放场景。 水平拖动左/右缩放; 向上/向下拖动垂直缩放(尽管某些场景将其x / y缩放比例锁定在一起)。 如果在场景中有x / y轴可以闪动,那么右键拖动轴会影响该轴。
- 右键单击:在大多数情况下单击右键将根据鼠标光标下的对象显示具有各种选项的上下文菜单。
- 中间按钮(或滚轮)拖动:按下滚轮拖动鼠标将始终平移场景(在场景中其他对象阻止左侧平移的情况下,此功能非常有用)。
- 轮旋转:放大和缩小场景。
对于使用右侧或中间按钮拖动很困难的机器(通常是Mac),存在另一种鼠标交互模式。 在此模式下,用鼠标左键拖动可在场景的某个区域上绘制一个框。 按钮释放后,场景将缩放并平移以适合框。 可以在上下文菜单中或通过调用以下方式访问此模式:
pyqtgraph.setConfigOption('leftButtonPan', False)
三、在GUI中集成pyqtgraph图形
在PyQtGraph中,有几种绘制图形的方法:
-
pyqtgraph.plot():创建一个新的绘图窗口来显示数据;
-
PlotWidget.plot():将一组新的数据添加到现有的绘图小部件;
-
PlotItem.plot():将一组新的数据添加到现有的绘图小部件;
-
GraphicsLayout.addPlot():添加一个新的图形到一个图形层中;
根据PyQtGraph这几种绘图方式,我们在PyQt中可以在窗口部件中显示图形,也可以在一个新的窗口的显示图形。