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.hqwc.cn/news/322865.html

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

相关文章

[Kubernetes]4. 借助腾讯云TKE快速创建Pod、Deployment、Service部署k8s项目

前面讲解了通过命令行方式来部署k8s项目,下面来讲讲通过腾讯云TKE来快速创建Pod、Deployment、Service部署k8s项目,云平台搭建Kubernetes可参考[Kubernetes]1.Kubernetes(K8S)介绍,基于腾讯云的K8S环境搭建集群以及裸机搭建K8S集群 一.通过腾讯云TKE创建集群 1.创建集群 参考上…

什么时候需要更换助听器?

什么时候需要更换助听器? 如果您现有的助听器无法完成工作,您如何知道是修理还是更换它们?助听器可能由于两个主要原因而失效,首先,它们可能出现故障,因此不再提供充分或适当的扩增。其次,您的听…

c++牛客总结

一、c/c语言基础 1、基础 1、指针和引用的区别 指针是一个新的变量,指向另一个变量的地址,我们可以通过这个地址来修改该另一个变量; 引用是一个别名,对引用的操作就是对变量本身进行操作;指针可以有多级 引用只有一…

GPU连通域分析方法

第1章连通域分析方法 连通域分析方法用于提取图像中相似属性的区域,并给出区域的面积,位置等特征信息。分为两种,基于游程(Runlength),和基于标记(Label)。 基于游程的方法,按照行对图像进行游…

上班经常迟到怎么办?

相信上班需要打卡的小伙伴都跟博主一样,经常可能因为迟一两分钟导致打开迟到而懊恼。 那么,如何避免这种问题呢?下面给大家提供一下博主自己试过的方法,效果还挺不错的 时间逆推法: 拿博主举例子,我住处到公司大概是…

Spring Security 6.x 系列(14)—— 会话管理之源码分析

一、前言 在上篇 Spring Security 6.x 系列(13)—— 会话管理之会话概念及常用配置 Spring Security 6.x 系列(14)—— 会话管理之会话固定攻击防护及Session共享 中了清晰了协议和会话的概念、对 Spring Security 中的常用会话配置进行了说明,并了解会话固定攻击防护…

计算机毕业设计——SpringBoot+vue仓库管理系统(附源码)

1,绪论 1.2,项目背景 随着电子计算机技术和信息网络技术的发明和应用,使着人类社会从工业经济时代向知识经济时代发展。在这个知识经济时代里,仓库管理系统将会成为企业生产以及运作不可缺少的管理工具。这个仓库管理系统是由&a…

展望2024: 中国AI算力能否引爆高性能计算和大模型训练的新革命?

★算力;算法;人工智能;高性能计算;高性能;高互联;生成式人工智能;StableDiffusion;ChatGPT;CoPilot;文本创建;图像生成;代码编写&…

就绪探针存活探针钩子

存活探针 livenessprobe 杀死容器,重启。 就绪探针 readinessProbe pod的状态是running ready状态是notready 容器不可以提供正常的业务访问,就绪探针不会重启容器 tcpSocket只是监听荣亲上的业务端口能否正常通信。8081没有,8080还在&am…

crontab 创建定时任务

1、创建crontab任务 crontab -ecrontab内容 */59 * * * * sh /home/restartAllSlave.sh >> /home/my-restartAllSlave.log 2>&12、创建执行脚本(restartAllSlave.sh) docker重启如下: docker restart slave_zllrp_gb_1 slav…

MessageBox:拓宽业务边界,HubSpot与WhatsApp的完美融合

在当今竞争激烈的商业环境中,企业必须迎合客户的多元化需求,通过创新的数字化工具实现全球化经营。今天运营坛将深度剖析MessageBox在连接HubSpot与WhatsApp上的独特价值,它在拓宽社交媒体界限、提升客户关系和实现国际化目标方面起着关键作用…

EasyRecovery2024操作安全、价格便宜的电脑数据恢复软件

EasyRecovery是一款操作安全、价格便宜、用户自主操作的非破坏性的只读应用程序,它不会往源驱上写任何东西,也不会对源驱做任何改变。它支持从各种各样的存储介质恢复删除或者丢失的文件,其支持的媒体介质包括:硬盘驱动器、光驱、…