PYQT5+pyqtgraph 2d绘图实时刷新(坐标系跟着曲线一起移动,且可以查看绘制历史)的解决方法

本文主要是介绍PYQT5+pyqtgraph 2d绘图实时刷新(坐标系跟着曲线一起移动,且可以查看绘制历史)的解决方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

PYQT5+pyqtgraph 2d绘图实时刷新(坐标系跟着曲线一起移动,且可以查看绘制历史)的解决方法

  • 效果图
  • 一、原理
  • 二、代码思路
    • 1.引入变量i来记录每一次更新
    • 2.固定坐标轴大小,并实时更新
    • 3缺点
  • 总结
  • 荣书记嘎嘎乱杀


PYQT5中使用pyqtgraph绘制实时2d曲线图时,希望坐标轴随着曲线一起移动,并可以查看历史绘制的曲线,官方demo有移动坐标轴的案例,但是不可拖动查看历史图像。

效果图

坐标系跟随绘制的线动


一、原理

pyqtgraph中有一个用于定位坐标长度的函数

tdplot.setXRange(0 , 200)

如这个函数,我设置了x轴为0-200.
那么要想实时跟随绘制的曲线,我的解决思路就是实时刷新这个函数到自己想要的数据对应的坐标轴上。

二、代码思路

1.引入变量i来记录每一次更新

每当有新的数据需要绘制时,就令 i 自增1,以此来达到记录数据个数的目的,当然也可以使用len(x)来运算得到。

2.固定坐标轴大小,并实时更新

设置一个需要的坐标长度xrange
我们肯定需要一个固定现实的坐标轴,那么只要使用上面提到的函数即可固定到坐标轴。
代码如下:

if i > xrange:tdplot.setXRange(self.i - xrange, self.i)

if语句用于判断从0开始绘制的图像是否超过我们需要的坐标轴长度(图像是否到达最左边),如果超过,则会实时更新坐标轴


3缺点

当然这个方案不会十分完美,缺点就是在绘制时无法移动坐标轴,因为它每次数据更新都会回到当前坐标轴上,我的解决办法是:绘制时失能鼠标控制,当停止绘制时恢复鼠标控制。
代码如下:

tdplot.setMouseEnabled(x=True, y=False) # 启用x轴控制,失能y轴控制
tdplot.setMouseEnabled(x=False, y=False) # 鼠标xy都不能划动

总结

这个方案并不完美,也许您有需要在绘图过程中缩放的需求,我的建议是新增两个按钮来实现缩放功能,所使用的函数还是坐标设置函数,在其中添加一个比例变量即可。
本人技术有限,此方案并非完美,仅作为自己技术参考


荣书记嘎嘎乱杀

这篇关于PYQT5+pyqtgraph 2d绘图实时刷新(坐标系跟着曲线一起移动,且可以查看绘制历史)的解决方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/549084

相关文章

Python清空Word段落样式的三种方法

《Python清空Word段落样式的三种方法》:本文主要介绍如何用python-docx库清空Word段落样式,提供三种方法:设置为Normal样式、清除直接格式、创建新Normal样式,注意需重... 目录方法一:直接设置段落样式为"Normal"方法二:清除所有直接格式设置方法三:创建新的Normal样

在Linux系统上连接GitHub的方法步骤(适用2025年)

《在Linux系统上连接GitHub的方法步骤(适用2025年)》在2025年,使用Linux系统连接GitHub的推荐方式是通过SSH(SecureShell)协议进行身份验证,这种方式不仅安全,还... 目录步骤一:检查并安装 Git步骤二:生成 SSH 密钥步骤三:将 SSH 公钥添加到 github

把Python列表中的元素移动到开头的三种方法

《把Python列表中的元素移动到开头的三种方法》在Python编程中,我们经常需要对列表(list)进行操作,有时,我们希望将列表中的某个元素移动到最前面,使其成为第一项,本文给大家介绍了把Pyth... 目录一、查找删除插入法1. 找到元素的索引2. 移除元素3. 插入到列表开头二、使用列表切片(Lis

Springboot项目启动失败提示找不到dao类的解决

《Springboot项目启动失败提示找不到dao类的解决》SpringBoot启动失败,因ProductServiceImpl未正确注入ProductDao,原因:Dao未注册为Bean,解决:在启... 目录错误描述原因解决方法总结***************************APPLICA编

Python安装Pandas库的两种方法

《Python安装Pandas库的两种方法》本文介绍了三种安装PythonPandas库的方法,通过cmd命令行安装并解决版本冲突,手动下载whl文件安装,更换国内镜像源加速下载,最后建议用pipli... 目录方法一:cmd命令行执行pip install pandas方法二:找到pandas下载库,然后

Linux如何查看文件权限的命令

《Linux如何查看文件权限的命令》Linux中使用ls-R命令递归查看指定目录及子目录下所有文件和文件夹的权限信息,以列表形式展示权限位、所有者、组等详细内容... 目录linux China编程查看文件权限命令输出结果示例这里是查看tomcat文件夹总结Linux 查看文件权限命令ls -l 文件或文件夹

解决pandas无法读取csv文件数据的问题

《解决pandas无法读取csv文件数据的问题》本文讲述作者用Pandas读取CSV文件时因参数设置不当导致数据错位,通过调整delimiter和on_bad_lines参数最终解决问题,并强调正确参... 目录一、前言二、问题复现1. 问题2. 通过 on_bad_lines=‘warn’ 跳过异常数据3

深入浅出SpringBoot WebSocket构建实时应用全面指南

《深入浅出SpringBootWebSocket构建实时应用全面指南》WebSocket是一种在单个TCP连接上进行全双工通信的协议,这篇文章主要为大家详细介绍了SpringBoot如何集成WebS... 目录前言为什么需要 WebSocketWebSocket 是什么Spring Boot 如何简化 We

解决RocketMQ的幂等性问题

《解决RocketMQ的幂等性问题》重复消费因调用链路长、消息发送超时或消费者故障导致,通过生产者消息查询、Redis缓存及消费者唯一主键可以确保幂等性,避免重复处理,本文主要介绍了解决RocketM... 目录造成重复消费的原因解决方法生产者端消费者端代码实现造成重复消费的原因当系统的调用链路比较长的时

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499