pyqtgraph 教程

pyqtgraph 教程

简介

PyQtGraph 是一个用于科学和工程数据可视化的开源库,基于 PyQt 和 NumPy 构建而成。它提供了丰富的绘图工具和交互功能,可以用于创建高性能的实时数据图表、图像显示和信号处理应用。

以下是 PyQtGraph 的一些特点和功能:

  1. 快速绘图:PyQtGraph 使用了基于 GPU 的绘图和渲染技术,能够快速处理大量数据并实时更新图形界面。它通过使用 NumPy 数组和 OpenGL 加速来实现高性能的绘图。
  2. 多种绘图类型:PyQtGraph 支持各种绘图类型,包括曲线图、散点图、直方图、表面图、等值线图等。它提供了灵活的绘图选项和定制能力,可以创建多种类型的图表。
  3. 实时数据可视化:PyQtGraph 的设计目标之一是实时数据可视化。它可以高效地处理实时数据流,并实时更新图表。这使得 PyQtGraph 在需要实时监测和可视化数据的应用中非常有用。
  4. 交互功能:PyQtGraph 提供了丰富的交互功能,例如缩放、平移、选取、标记和测量等。这些功能使用户能够与图表进行交互,并通过交互方式进行数据分析和探索。
  5. 多平台支持:PyQtGraph 基于 PyQt 库,因此可以在多个平台上运行,包括 Windows、Mac 和 Linux。它与 PyQt 的良好集成性确保了在 PyQtGraph 中能够利用 PyQt 的全部功能。
  6. 易于使用:PyQtGraph 具有简单、直观的 API 接口,易于上手和使用。它提供了丰富的示例和文档,使开发人员能够快速上手并构建复杂的数据可视化应用。

总体而言,PyQtGraph 是一个功能强大、高性能且易于使用的科学数据可视化库。它适用于需要处理大量数据、实时更新图表和进行交互分析的科学和工程应用。无论是快速绘制实时数据、创建复杂的图表还是进行交互式数据分析,PyQtGraph 都提供了丰富的功能和工具来满足需求。

pyqtgraph 安装

pyqtgraph 需要配合 PyQt5 使用,这些都要预先安装好,在此只描述 pyqtgraph 相关:

pip install pyqtgraph

pyqtgraph 实例全集

官方专门给出了一个实例集合,包含了展示与源码,非常方便学习,通过以下代码来运行:

import pyqtgraph.examples
pyqtgraph.examples.run()

特别提醒:运行此命令时需要在python模块的所在目录下一般为 site-packages 目录。

设置画笔

#!/usr/bin/env python
import pyqtgraph as pg
from pyqtgraph.Qt import QtWidgets# 设置背景色为白色
pg.setConfigOption('background', 'w')
# 创建一个窗口
app = QtWidgets.QApplication([])
win = QtWidgets.QMainWindow()
win.setWindowTitle('pyqtgraph example: Auto Fill Window')
# 创建一个画布
plot_widget = pg.PlotWidget()
curve = plot_widget.plot([1, 3, 2, 4])# 在画布上绘制一个简单的曲线
# 设置 线条绘制笔
pen = pg.mkPen(color='red', width=2)
pen = pg.mkPen(color=(255, 0, 0, 128), width=2)  # 设置颜色的RGBA值,其中128表示50%的透明度
curve.setPen(pen)
# 设置画布为窗口的中心项
win.setCentralWidget(plot_widget)
# 定义窗口大小变化的回调函数
def onResize(event):# 自动调整画布大小以填充整个窗口plot_widget.setGeometry(win.centralWidget().geometry())
# 将回调函数连接到窗口的resize事件
win.resizeEvent = onResize
# 显示窗口
win.show()
# 运行pyqtgraph事件循环
app.exec()

请添加图片描述

设置渐变映射图

由于pyqtgraph 调整窗口大小后,灰度图会变成渐变灰色样式,为了保持原来的颜色映射设置,绑定了窗口大小变化的回调函数 onResize

import pyqtgraph as pg
from pyqtgraph.Qt import QtGui
# 创建图片类对象
img = pg.ImageItem() # 
# 设置数据
img.setImage(data)
# 设置
img.setOpts(autoRange=False)
img.setRect(QtCore.QRectF(0, 0, data.shape[1], data.shape[0]))
img.setAutoDownsample(False)
# 定义窗口大小变化的回调函数
def onResize(event):# 创建自定义颜色映射img.setLookupTable(lut)# 创建自定义颜色映射
color_map = pg.ColorMap(pos=np.array([0.0, 0.5, 0.5, 1.0]),color=np.array([[255, 255, 0, 255], [255, 0, 0, 255], [255, 255, 0, 255], [255, 255, 255, 255]])
)# 获取颜色映射的查找表
lut = color_map.getLookupTable(nPts=256)
vmin, vmax = np.sort(data.flatten())[int(data.shape[0]*data.shape[1]/50)], np.sort(data.flatten())[int(data.shape[0]*data.shape[1]/50*49)]win.resizeEvent = onResize
win.show()
img.setLookupTable(lut)
## 设置初始 的 灰度范围值
hist.setLevels(vmin, vmax)
tr = QtGui.QTransform()
img.setTransform(tr.scale(1/2048, 0.1220703125).translate(0,1000/0.1220703125))

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

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

相关文章

python 多线程 守护线程

daemon线程:守护线程,优先级别最低,一般为其它线程提供服务。通常,daemon线程体是一个无限循环。如果所有的非daemon线程(主线程以及子线程)都结束了,daemon线程自动就会终止。t.daemon 属性,设…

大模型机器人发展史:从VoxPoser、RT2到斯坦福Mobile ALOHA、Google机器人

前言 23年7月,我在朋友圈评估Google的RT2说道: “大模型正在革新一切领域啊,超帅,通过大模型不仅能理解“人话”,还能对“人话”进行推理,并转变为机器人能理解的指令,从而分阶段完成任务。回…

Hyperledger Fabric 权限策略和访问控制

访问控制是区块链网络十分重要的功能,负责控制某个身份在某个场景下是否允许采取某个操作(如读写某个资源)。 常见的访问控制模型包括强制访问控制(Mandatory Access Control)、自主访问控制(Discretionar…

代码随想录算法训练营第21天 |530.二叉搜索树的最小绝对差 501.二叉搜索树中的众数 236. 二叉树的最近公共祖先

530.二叉搜索树的最小绝对差 题目链接:530.二叉搜索树的最小绝对差 给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。 示例: 提示:树中至少有 2 个节点。 💡解题思路 题目中…

UE5 将类修改目录

有个需求,需要修改ue里面类的位置,默认在Public类下面,我想创建一个二级目录,将所有的类分好位置,方便查看。 上图为创建一个类所在的默认位置。 接下来,将其移动到一个新的目录中。 首先在资源管理器中找…

Android - CrashHandler 全局异常捕获器

官网介绍如下:Thread.UncaughtExceptionHandler (Java Platform SE 8 ) 用于线程因未捕获异常而突然终止时调用的处理程序接口。当线程由于未捕获异常而即将终止时,Java虚拟机将使用thread . getuncaughtexceptionhandler()查询该线程的UncaughtExceptio…

模集 - 240105 - 模集期末速成

TAG - 模集、期末、速成 模集、期末、速成 模集、期末、速成 // – 高数帮 - 期末速成 – //阈值电压晶体管工作区及其判断方法电路公式//体效应沟长调制效应亚阈值效应…// – 阶段考核1 – //集成电路的优势与特点:体积小、速度快、功耗低、电路中以晶体管为主&a…

docker jenkins NB: JAVA_HOME should point to a JDK not a JRE

jenkins java编译错误: 3.5.4/conf/settings.xml The JAVA_HOME environment variable is not defined correctly This environment variable is needed to run this program NB: JAVA_HOME should point to a JDK not a JRE Build step ‘Invoke top-level Maven t…

软件测试|MySQL主键自增详解:实现高效标识与数据管理

简介 在MySQL数据库中,主键自增是一种常见的技术,用于自动为表中的主键字段生成唯一的递增值。本文将深入讨论MySQL主键自增的原理、用途、使用方法,以及在实践中的注意事项和最佳实践。 主键自增 主键自增的原理 主键自增是通过使用AUTO…

【PostgreSQL在线创建索引(CIC)功能的锁分析以及使用注意】

前一篇文章提到了普通创建索引会阻塞DML操作 PostgreSQL创建索引的锁分析和使用注意 而PostgreSQL里可以使用create index concurrently 在线创建索引(CIC)功能,降低创建索引在表上申请的锁的级别,ShareUpdateExclusiveLock级别的锁和RowExclusiveLock…

【Linux系统编程二十七】:线程的互斥与同步(互斥锁的使用与应用)

【Linux系统编程二十七】:线程的互斥与同步(互斥锁的使用与应用) 一.问题:数据不一致(混乱/不安全)1.多线程并发计算不安全2.将数据加载到寄存器的本质 二.解决方法--互斥锁三.互斥锁的概念与接口1.定义锁2.加锁/解锁 四.互斥锁实现原理与应用1.原理&…

[redis] redis主从复制,哨兵模式和集群

一、redis的高可用 1.1 redis高可用的概念 在web服务器中,高可用是指服务器可以正常访问的时间,衡量的标准是在多长时间内可以提供正常服务(99.9%、99.99%、99.999%等等)。 高可用的计算公式是1-(宕机时间)/(宕机时…

subversion httpd

通过http访问模式部署SVN的操作步骤如下: 步骤一:安装SVN 步骤二:安装Apache 步骤三:安装mod_dav_svn 步骤四:配置SVN 步骤五:配置Apache 步骤六:浏览器测试访问 步骤一:安装SVN 1.…

Linux网络配置概述

目录 一.查看网络配置 1.ifconfig 2.ip a 3.hostname 4.route 5.netstat和ss (1)netstat (2)ss (3)区别 6.ping 7.traceroute 8.nslookup 9.dig 二.网卡配置 三.域名解析配置文件 1.文件所…

GEE python登录重大更新—— ee.Initialize()初始验证过程更新

最近GEE python进行了更新,因此原始的登录代码将无法使用,所以这里我们看一下通常会报出的错误,这里需要我们将我们运行的projection具体的名称写入进去,也就是GEE中你再JavaScript界面中运行的项目名称,相较与之前我们需要进行验证码的copy,这里直接可以通过项目的写入来…

Linux限制用户可用硬盘空间

为了防止某个用户占用大量资源导致其他用户无法正常使用,一般会对单个用户可占用资源进行限制。就磁盘限额,XFS文件系统原生支持目录级别的限制。ext文件系统不支持目录限制,曲线方式是限制用户的总占用空间。 本文介绍使用quota程序限制用户…

模型评估:评估指标的局限性

“没有测量,就没有科学。”这是科学家门捷列夫的名言。在计算机科学特别是机器学习领域中,对模型的评估同样至关重要。只有选择与问题相匹配的评估方法,才能快速地发现模型选择或训练过程中出现的问题,迭代地对模型进行优化。模型…

【华为】IPsec VPN 实验配置(动态地址接入)

【华为】IPsec VPN 实验配置(动态地址接入) 注意实验需求配置思路配置命令拓扑R1基础配置配置第一阶段 IKE SA配置第二阶段 IPsec SA ISP_R2基础配置 R3基础配置配置第一阶段 IKE SA配置第二阶段 IPsec SA PCPC1PC2 检查建立成功查看命令清除IKE / IPsec…

Acrel-EIoT能源物联网云平台助力电力物联网数据服务 ——安科瑞 顾烊宇

摘要:Acrel-EIOT能源物联网云平台是一个结合在线销售的互联网商业模式,为分布广泛的互联网用户提供PAAS服务的平台。安科瑞物联网产品安装完成后,用户可以通过手机扫描代码轻松实现产品访问平台,无需注意调试和平台运行过程&#…

【深度学习:Self-supervised learning (SSL) 】自我监督学习解释

【深度学习:SSL Self-supervised learning 】自我监督学习解释 什么是自我监督学习?比较自我监督学习与监督学习和无监督学习 为什么计算机视觉模型需要自监督学习?自我监督学习的好处自监督学习的局限性 自我监督学习如何运作?对…