pyqtgraph绘制实时更新数据的图

news2025/2/24 20:57:03

        PyQtGraph是一个基于PyQt和NumPy的Python库,它专为实时数据可视化而设计。以绘制0~2π范围的y=sin(x)为例,基本用法的代码如下:

# coding=utf-8

import pyqtgraph as pg
from pyqtgraph.Qt import QtGui, QtCore
import numpy as np


# pyqtgraph中的颜色表示,blue:b,green:g,red:r,cyan:c,magenta:m,yellow:y,black:k,white:w
# pyqtgraph中的颜色表示也可用十六进制,如白色'#FFFFFF'
# 字体大小的单位有px(pixel,像素)和pt(point,点),px适用于屏幕显示,其大小是动态的,而pt适用于印刷,大小是固定的。


def update():
    global x, y
    y = np.roll(y, -1)  # 滚动数组,模拟数据更新
    curve.setData(x, y)  # 更新曲线数据


def mouseover(pos):
    global win
    act_pos = curve.mapFromScene(pos)
    if type(act_pos) != QtCore.QPointF:
        return
    # print(act_pos.x(), act_pos.y())
    win.setWindowTitle("(x = {:.4f}, y = {:.4f})".format(act_pos.x(), act_pos.y()))


if __name__ == '__main__':
    # 创建应用
    app = QtGui.QApplication([])

    # 设置窗口界面属性
    win = pg.GraphicsLayoutWidget(show=True, title="实时数据更新示例")    # 设置程序界面的标题
    win.resize(800, 600)    # 设置程序界面的窗口大小
    # win.setBackground("b")    # 设置背景颜色为蓝色。默认背景是黑色,background='default'

    # 添加绘图区域
    plot = win.addPlot(title="实时更新的正弦波形")    # 设置绘图的标题
    plot.showGrid(x=True, y=True)     # x轴和y轴都显示网格
    x_styles = {'color': 'r', 'font-size': '30px', 'units': 'radian'}  # 设置标签文字、颜色、字体大小、单位
    y_styles = {'color': 'r', 'font-size': '30px'}    # 设置标签文字、颜色、字体大小
    plot.setLabel('left', 'y=sin(x)',  **y_styles)    # 左边坐标轴,Y轴
    plot.setLabel('bottom', 'x', **x_styles)    # 下边坐标轴,X轴
    plot.getAxis('left').setPen('#0000FF')    # 坐标轴上色
    plot.getAxis('bottom').setPen('#0000FF')    # 坐标轴上色
    plot.setXRange(min=0, max=7)    # 设置X轴刻度范围
    plot.setYRange(min=-1.2, max=1.2)    # 设置Y轴刻度范围
    plot.setMouseEnabled(x=False, y=False)    # 设置禁用鼠标交互,默认是启用的
    curve = plot.plot(pen="y")   # 创建一条黄色的线

    # 数据初始化
    x = np.linspace(0, 2 * np.pi, 500)
    y = np.sin(x)

    # 绑定鼠标移动的信号和槽, 移动鼠标时就在窗口标题上显示当前鼠标停留位置的坐标
    curve.scene().sigMouseMoved.connect(mouseover)

    # 设置定时器,每20毫秒更新一次,相当于FPS=50
    timer = QtCore.QTimer()
    timer.timeout.connect(update)
    timer.start(20)    # 每20毫秒更新一次

    # 开始事件循环
    QtGui.QApplication.instance().exec_()

运行效果截图如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2255396.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

容器运行应用及Docker命令

文章目录 一、使用容器运行Nginx应用1_使用docker run命令运行Nginx应用1 观察下载容器镜像过程2 观察容器运行情况 2_访问容器中运行的Nginx服务1 确认容器IP地址2 容器网络说明3 使用curl命令访问 二、Docker命令1_Docker命令获取帮助方法2_Docker官网提供的命令说明3_docker…

小身躯大能量-供热系统通过EtherCAT转Profinet网关进行升级

在现代工业自动化领域,通信技术的进步对于提高系统效率、稳定性和可靠性起着至关重要的作用。EtherCAT(Ethernet for Control Automation Technology)作为一种实时以太网解决方案,因其高性能及成本效益高等特点,在众多…

网络编程(UDP\TCP回显服务器)

目录 套接字socket TCP和UDP特点比较 特点 比较 UDP回显服务器/客户端的编写 UDP的socket api 回显服务器 客户端 TCP回显服务器/客户端的编写 TCP的socket api 回显服务器 客户端 优化服务器 1.关闭服务器创建的socket对象 2.引入线程池,为多个客户…

系统监控——分布式链路追踪系统

摘要 本文深入探讨了分布式链路追踪系统的必要性与实施细节。随着软件架构的复杂化,传统的日志分析方法已不足以应对问题定位的需求。文章首先解释了链路追踪的基本概念,如Trace和Span,并讨论了其基本原理。接着,文章介绍了SkyWa…

burp常用机漏洞测试理论

声明! 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&a…

docker学习笔记(四)--DockerFile

文章目录 一、什么是Dockerfile二、docker build命令三、dockerfile指令3.1 FROM3.2 ENV3.3 WORKDIR3.4 RUN3.5 CMD3.6 ENTRYPOINT3.7 EXPOSE3.8 ARG3.9 ADD3.10 COPY3.11 VOLUME 四、dockerfile示例 一、什么是Dockerfile Dockerfile 是用于构建 Docker 镜像的脚本文件&#…

创造未来:The Sandbox 创作者训练营如何赋能全球创造者

创作者训练营让创造者有能力打造下一代数字体验。通过促进合作和提供尖端工具,The Sandbox 计划确保今天的元宇宙是由一个个创造者共同打造。 2024 年 5 月,The Sandbox 推出了「创作者训练营」系列,旨在重新定义数字创作。「创作者训练营」系…

基于Pyhton的人脸识别(Python 3.12+face_recognition库)

使用Python进行人脸编码和比较 简介 在这个教程中,我们将学习如何使用Python和face_recognition库来加载图像、提取人脸编码,并比较两个人脸是否相似。face_recognition库是一个强大的工具,它基于dlib的深度学习模型,可以轻松实…

抽象工厂模式的理解和实践

在软件开发中,设计模式是解决常见问题的最佳实践。抽象工厂模式是一种创建型设计模式,提供了一种创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。本文将详细解释抽象工厂模式的概念、结构、优点、缺点,并通过Java代…

Hadoop生态圈框架部署 伪集群版(五)- HBase伪分布式部署

文章目录 前言一、Hbase伪分布式部署(手动部署)1. 下载Hbase2. 上传安装包3. 解压HBase安装包4. 配置HBase配置文件4.1 修改hbase-env.sh配置文件4.2 修改hbase-site.xml配置文件4.3 修改regionservers配置文件4.4 删除hbase中slf4j-reload4j-1.7.33.jar…

【css】基础(二)

本专栏内容为:前端专栏 记录学习前端,分为若干个子专栏,html js css vue等 💓博主csdn个人主页:小小unicorn ⏩专栏分类:css专栏 🚚代码仓库:小小unicorn的代码仓库🚚 &a…

链式设计模式

链式设计模式——装饰器模式和职责链模式 装饰模式 定义: 指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式。 结构 装饰(Decorator)模式中的角色: 抽…

电子电气架构 --- E/E(电子电气架构)的重新定义

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 所谓鸡汤,要么蛊惑你认命,要么怂恿你拼命,但都是回避问题的根源&…

app-1 App 逆向环境准备(mumu模拟器+magisk+LSPosed+算法助手+抓包(socksDroid+charles)+Frida环境搭建

一、前言 本篇是基于 mumu模拟器 进行环境配置记录。(真机的后面博客记录) 二、mumu模拟器magiskLSPosed算法助手 2.1、mumu模拟器 选择 mumu 模拟器,下载地址:https://mumu.163.com 安装完成后打开,找到设置中心进…

【服务器问题】xshell 登录远程服务器卡住( 而 vscode 直接登录不上)

打开 xshell ssh 登录远程服务器:卡在下面这里,迟迟不继续 当 SSH 连接卡在 Connection established. 之后,但没有显示远程终端提示符时,这通常意味着连接已经成功建立,说明不是网络连接和服务器连接问题,…

Python Selenium 各浏览器驱动下载与配置使用(详细流程)

1、安装 pip install selenium 2、浏览器驱动下载 Chrome(google)浏览器驱动 下载地址:http://chromedriver.storage.googleapis.com/index.html 或 https://sites.google.com/a/chromium.org/chromedriver/home . 下载地址:http://chromedriver.stor…

Redis的认识

目录 1. Redis的特性2. Redis的使用场景2.1 Redis可以做什么?2.2 Redis不可以做什么 3. Redis的安装和启动4. Redis的基本全局命令4.1 GET和SET命令4.2 KEYS指令4.3 EXISTS指令4.4 DEL指令4.5 EXPIRE指令4.6 TTL指令4.7 TYPE指令 5. 数据类型和内部编码6. 单线程架构…

IntelliJ+SpringBoot项目实战(28)--整合Beetl模板框架

在前面的文章里介绍过freemarker,thymeleaf模板引擎,本文介绍另一个性能超高的模板引擎---Beetl,据说此模板引擎的性能远超Freemarker。官网的说法是,Beetl 远超过主流java模板引擎性能(引擎性能5-6倍于FreeMarker,2倍…

全面解析DApp开发中的智能合约设计

在DApp的开发过程中,智能合约的设计起到了至关重要的作用。智能合约是运行在区块链上的程序,负责处理和执行DApp中的逻辑、交易和数据存储。下面我们将深入探讨智能合约的设计原则、挑战和优化方法,帮助开发者掌握如何设计高效、安全的智能合…

利用Grounding DINO进行自动标注——目标检测任务——YOLO格式

关于Grounding DINO的环境搭建可以参考我的以前的博客,链接如下所示 如何在Linux上离线部署Grounding DINO-CSDN博客 这个博客主要来介绍如何利用Grounding DINO这个项目去进行目标检测的自动化标注。并且给出了相关的代码已经实验验证。 1.数据集准备 2. 开始实…