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说道: “大模型正在革新一切领域啊,超帅,通过大模型不仅能理解“人话”,还能对“人话”进行推理,并转变为机器人能理解的指令,从而分阶段完成任务。回…

pandas 笔记:to_numeric

1 函数介绍 它用于将参数转换为数值类型 这个函数尤其适用于在数据清洗过程中,将数据集中的字符串或其他类型的列转换为数值型数据。 pandas.to_numeric(arg, errorsraise, downcastNone, dtype_backend_NoDefault.no_default) 2 参数说明 arg要转换的数据。可…

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…

Java工程师面试题解析与深度探讨

Java工程师面试题解析与深度探讨 第一部分:引言 Java作为一门广泛应用的编程语言,拥有庞大的生态系统,Java工程师因此成为众多企业追逐的目标。而在Java工程师的招聘中,面试是了解候选人技能和经验的核心环节。本文将深入探讨一…

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…

phpcms v9未审核推荐信息出现在推荐列表中【BUG修复】

修改文件:phpcms/modules/content/class/content_tag.class.php 调整过的方法: public function __construct() {$this->db pc_base::load_model(content_model);$this->position pc_base::load_model(position_model);$this->position_da…

【Python百宝箱】数字货币赋能:市场分析、回测策略全面解析

数字货币交易与市场分析:Python工具全解析 前言 随着数字货币市场的蓬勃发展,投资者和开发者对于高效获取、处理和分析市场数据的需求日益增长。本文将深入介绍一系列强大的Python库,涵盖从常规市场数据获取到专业的技术分析和回测交易策略…

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

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

力扣刷题python

文章目录 1.两数之和 1.两数之和 第一种解法 class Solution(object):def twoSum(self, nums, target):""":type nums: List[int]:type target: int:rtype: List[int]"""for i in nums:jtarget-istart_indexnums.index(i)next_indexstart_inde…

知识任务的解决方案-RAG

接上文,本篇介绍论文提到的LocalGPT system,是以NextDoor社区为数据源和应用场景的。 该系统包括两部分:RAG和fine-tune 一、RAG 大致思想就是 给定一个问题/任务,先检索到数据源中最相关的文档,再用这些文档来生成回…

【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.文件所…