IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 【Python_PyQtGraph 学习笔记】基于PyQtGraph和GraphicsLayoutWidget动态绘图并实现窗口模式,且保留全部绘图信息 -> 正文阅读

[Python知识库]【Python_PyQtGraph 学习笔记】基于PyQtGraph和GraphicsLayoutWidget动态绘图并实现窗口模式,且保留全部绘图信息

**

基于PyQtGraph和GraphicsLayoutWidget动态绘图并实现窗口模式,且保留全部绘图信息

**
**

前言

基于PySide2、PyQtGraph和GraphicsLayoutWidget动态绘图并实现窗口模式,并保留全部绘图信息:绘制好的图像既可以显示全部信息,也可以显示最新的50个点信息;因为数据量的增加,折线会因为窗口大小的固定缩成一团,如果有窗口模式这一功能,可以清楚的看到最新绘制的点,保证线与线、点与点之间的距离处于一个合理的范围。

正文

实现该需求的重点是:设置PlotItem图形对象显示的X轴区域范围

1、实现动态绘制数据曲线

如何通过定时器进行绘图可以参考【Python_PyQtGraph 学习笔记】基于PySide2和GraphicsLayoutWidget实现动态绘制数据曲线

2、创建一个QCheckBox()对象,可以选择是否显示窗口模式

        self.ui.ckbWindowMode = QCheckBox()  # 初始化 窗口模式选择框
        self.ui.ckbWindowMode.setText("窗口模式")  # 窗口模式选择框 设置文本

3、窗口模式功能的实现

直接看完整代码:

    def __f_update_plot_data(self):
        """
        function:  更新plot数据函数
              in:  None
             out:  None
          return:  None
          others:  Update Plot Data Function
        """
        now_time = datetime.datetime.now()  # 获取当前时间
        new_time = now_time.strftime('%H:%M:%S')  # 设置时间输出格式

        self.__m_temCurveLst[self.__m_curvePtr] = np.random.rand()  # 数组元素 N维的均匀分布的随机数
        self.__m_humCurveLst[self.__m_curvePtr] = np.random.randn()  # 产生n维的正态分布的随机数
        self.__m_curvePtr += 1  # 曲线指针+1

        if self.__m_curvePtr >= len(self.__m_temCurveLst):  # 如果指针大小 > 温度数据点列表
            tmp = self.__m_temCurveLst
            self.__m_temCurveLst = [0 for i in range(len(self.__m_temCurveLst) + 10)]
            self.__m_temCurveLst[:len(tmp)] = tmp

            hmp = self.__m_humCurveLst
            self.__m_humCurveLst = [0 for i in range(len(self.__m_humCurveLst) + 10)]
            self.__m_humCurveLst[:len(hmp)] = hmp

        # <editor-fold desc="窗口模式实现">
        if self.ui.ckbWindowMode.checkState():  # 判断是都是窗口模式
            self.ui.temCurve.setData(self.__m_temCurveLst[:self.__m_curvePtr])
            self.ui.humCurve.setData(self.__m_humCurveLst[:self.__m_curvePtr])
            if self.__m_curvePtr > 50:  # 判断曲线指针是否大于50
                self.ui.Curve.setXRange(self.__m_curvePtr - 50, self.__m_curvePtr)  # 当大于50时,只显示最后50个点
        else:
            self.ui.temCurve.setData(self.__m_temCurveLst[:self.__m_curvePtr])
            self.ui.humCurve.setData(self.__m_humCurveLst[:self.__m_curvePtr])
            self.ui.Curve.setXRange(0, self.__m_curvePtr)
        # </editor-fold>

其中,重点是以下代码段:

		# <editor-fold desc="窗口模式实现">
        if self.ui.ckbWindowMode.checkState():  # 判断是都是窗口模式
            self.ui.temCurve.setData(self.__m_temCurveLst[:self.__m_curvePtr])
            self.ui.humCurve.setData(self.__m_humCurveLst[:self.__m_curvePtr])
            if self.__m_curvePtr > 50:  # 判断曲线指针是否大于50
                self.ui.Curve.setXRange(self.__m_curvePtr - 50, self.__m_curvePtr)  # 当大于50时,只显示最后50个点
        else:
            self.ui.temCurve.setData(self.__m_temCurveLst[:self.__m_curvePtr])
            self.ui.humCurve.setData(self.__m_humCurveLst[:self.__m_curvePtr])
            self.ui.Curve.setXRange(0, self.__m_curvePtr)
        # </editor-fold>

self.ui.ckbWindowMode: 创建的QCheckBox()对象
self.__m_curvePtr: 创建的曲线指针,记录了当前绘制的点数量
self.ui.Curve: 创建的PlotItem图形对象
self.ui.temCurve: PlotItem图形对象添加PlotDataItem曲线对象
self.ui.humCurve: PlotItem图形对象添加PlotDataItem曲线对象
setXRange(): 设置PlotItem图形对象显示的X轴区域

4、实现的效果图:最终实现的效果

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-12-25 11:04:55  更:2022-12-25 11:08:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/22 18:21:02-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码