提到 GUI 绘图,大家可能第一反应是 OpenGL 和 Matplotlib,但其实基于 Qt 平台还有个功能强大的 pyqtgraph 绘图库,不仅支持丰富的图形种类,还能实时更新绘图数据并进行交互式操作。
不同于网上其他文章或代码讲解,今天我们集中只关注实时绘制数据功能的实现。为了更精准学习该 pyqtgraph 模块功能,我们将参考官方给出的实例来边学边练。
1. pyqtgraph 简介
1.1 pyqtgraph 特点
关于 pyqtgraph 与 Matplotlib 的对比,大致要点如下:pyqtgraph 在画图方面不如 Matplotlib 功能完整和成熟,但运行更快
Matplotlib 旨在绘制高质量图像,pyqtgraph 则主要面向数据抓取和数据分析的应用
相比 Matplotlib,pyqtgraph 对 python 和 qt 编程更亲和
pyqtgraph 具备更好的图像交互、3D展示等
1.2 pyqtgraph 安装
一般配合 PyQt5 使用,这些都要预先安装好,我们这里只提 pyqtgraph 相关:
pip install pyqtgraph
1.3 pyqtgraph 实例全集
官方专门给出了一个实例集合,包含了展示与源码,非常方便学习,通过以下代码来运行:
import pyqtgraph.examples
pyqtgraph.examples.run()
运行后,会出现如下 GUI 界面
今天我们主要关注实时绘制数据,找到左侧目录中的 "Scrolling plots",单击右侧可以看到源码
双击或者点击下方的 "Run Example" 便可展示运行效果:
特定截图:
2. 实时绘制学习
结合着实例代码和演示效果,我们可以看到有如下不同实时展示模式:模式1: 从 0 开始固定 x 轴数值范围,数据在该范围内向左移动展示
模式2: 数据带着 x 轴坐标一起向左移动展示
模式3: 固定 x 轴数值右侧范围到 0,数据左移展示
模式4: 左侧固定从 0 开始,数据累积展示
模式5: 数据范围右侧截止到 0,但仍可查看大于 0 范围
2.1 模式1: 固定 x 范围,左移展示数据
2.1.1 模式1效果
2.1.2 实例1代码
我们可以在实例汇总的代码中将该部分代码抽离出来,大致如下:
import pyqtgraph as pg
from pyqtgraph.Qt import QtCore,