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))

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

迷你洗衣机哪个牌子好又实惠?全网目前口碑最好的迷你洗衣机推荐

随着大家工作的压力越来越大,下了班之后只能想躺平,在洗完澡之后看着还需要手洗的内衣裤真的很头疼。有些小伙伴还有会攒几天再丢进去洗衣机里面一起,而且这样子是非常不好的,用过的内衣裤长时间不清洗容易滋生细菌,而…

mysql最常见问题:允许远程访问和修改密码 的详细解决方法

目 录 一、不能通过navicat等数据库客户端远程访问 (一)问题 (二)解决方法:开启远程可访问 1、输入授权命令的方式 2、直接更改数据库中的用户表 二、修改数据库的密码 Mysq在Lin…

网络原理OSI

目录 一、应用层 1、功能 2、协议的分类 二、UDP原理(传输层) 1、协议端格式 2、格式解释 三、TCP原理(传输层) 1、协议端格式 2、长度 3、可靠传输 (1)确认应答 (2)超时…

学到了!微信这样回复客户既高效又方便!

对于企业来说,如何在微信上高效回复客户,提供良好的用户体验是很重要的。 但常常因为一人管理太多号,消息回复不过来;同时太多客户咨询,手忙脚乱;回复的话术让人感到不专业。 没关系,小编又办法…

STM32——通用定时器脉冲计数实验

1.脉冲计数实验原理 2.从模式配置结构体 typedef struct { uint32_t SlaveMode; /* 从模式选择 / uint32_t InputTrigger; / 输入触发源选择 / uint32_t TriggerPolarity; / 输入触发极性 / uint32_t TriggerPrescaler; / 输入触发预分频 / uint32_t TriggerFilter; / 输入滤波…

算法回忆录——排序

文章目录 1. 插入排序2. 选择排序3. 冒泡排序4. 希尔排序5. 归并排序6. 快速排序7. 堆排序8. 计数排序9. 桶排序10. 基数排序 1. 插入排序 分为两个序列,前面一个序列是排好序的,后面一个序列是未排好的。未排好的序列的第一个元素(a&#x…

STM32H5培训(二)性能提升与功耗优化

文章目录 1. 前言2. 性能提升3. 功耗优化参考: 1. 前言 本篇主要介绍STM32H5系列的性能提升和功耗优化方面的具体表现。H5系列相比于F4系列在性能和功能上有较大的升级,包括更强的内核、更高的主频、更快的flash访问速度、更丰富的通信接口和先进的安全…

【算法Hot100系列】有效的数独

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 jav…

在wsl中安装miniconda

下载安装包 打卡miniconda的官网https://docs.conda.io/projects/miniconda/en/latest/,下载下来安装包,或者直接在乌班图中运行命令wget https://repo.anaconda.com/miniconda/Miniconda3-py38_23.5.2-0-Linux-x86_64.sh,等待下载完毕 安装 到下载目录下执行命令…

Spring MVC入门案例!!!

1.先加入架包&#xff08;我这里使用了tomcat插件&#xff0c;你也可以直接按照原本的方式使用tomcat&#xff09; <packaging>war</packaging><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8&l…

R语言(12):绘图

12.1 创建图形 12.1.1 plot函数 plot(c(1,2,3),c(1,2,4)) plot(c(1,2,3),c(1,2,4),"b") plot(c(-3,3),c(-1,5),"n",xlab "x",ylab "y")12.1.2 添加线条&#xff1a;abline()函数 x <- c(1,2,3) y <- c(1,3,8) plot(x,y) lm…

飞塔FortiGate-1000C设备引进助力易天构建网络安全新防线

在当今数字化浪潮的推动下&#xff0c;企业对网络安全的需求日益迫切。为了应对不断升级的网络威胁&#xff0c;给客户提供最为优质的产品&#xff0c;易天引进了最新兼容性测试设备飞塔FortiGate-1000C&#xff0c;为光模块产品交付提供了更强劲的性能保障。 FortiGate-1000C是…

还不了解 Dockerfile 的同学不是好测试人

前言&#xff1a;近年来 Docker 非常火&#xff0c;想要玩好 Docker 的话 Dockerfile 是绕不开的&#xff0c;这就好比想要玩好 Linux 服务器绕不开 shell 道理是一样的。 今天我们就来聊一聊 Dockerfile 怎么写&#xff0c;那些指令到底是什么意思。 一、先来看一个简单的 D…

消息中间件

一、 消息中间件的介绍 消息中间件属于分布式系统中的子系统&#xff0c;关注数据的发送和接收&#xff0c;利用高效、可靠的异步消息传递机制&#xff0c;对分布式系统中的各个子系统进行集成。 1.1 为什么使用消息中间件 异步 解耦 缓冲能力 伸缩性 提高系统扩展性1.2 消息…

C++11新特性(也称c++2.0)

目录 1.输出C版本&#xff1a;cout << __cplusplus << endl; 2.Uniform Initialization(一致性初始化) 3.initializer_list&#xff08;形参&#xff09; 4.explicit 5.for循环的新用法 6.default和delete 7.Alias Template&#xff08;模板化名&#xff09…

Linux ssh 实现远程免密登录

一、背景 我搭建了一个 zookeeper 集群&#xff0c;写了一个 shell 脚本来控制集群的启动和关闭&#xff0c;但是我发现每次我执行 shell 脚本的时候&#xff0c;都需要我输入各个服务器的密码才可以运行&#xff0c;感觉很麻烦。shell 脚本里面连接其他服务器用的就是 ssh 的方…

HarmonOS 日期选择组件(DatePicker)

本文 我们一起来看基础组件中的 DatePicker 这就是 日程开发中的日期组件 他可以创建一个日期的范围 并创建一个日期的滑动选择器 这里 我们先写一个组件的骨架 Entry Component struct Index {build() {Row() {Column() {}.width(100%)}.height(100%)} }然后 我们先在Column组…

Redis:原理速成+项目实战——Redis实战5(互斥锁、逻辑过期解决缓存击穿问题)

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位大四、研0学生&#xff0c;正在努力准备大四暑假的实习 &#x1f30c;上期文章&#xff1a;Redis&#xff1a;原理速成项目实战——Redis实战4&#xff08;解决Redis缓存穿透、雪崩、击穿&#xff09; &#x1f4da;订阅专…

想学习云计算么?教你如何免费白嫖微软和AWS的云资源一年

在这个数字化飞速发展的时代&#xff0c;云计算已成为IT行业的未来趋势。作为一名渴望进步的IT专业人员&#xff0c;掌握云计算不仅意味着技能的提升&#xff0c;更是升职加薪、拓宽职业道路的重要跳板。这里教你如何免费利用微软Azure和亚马逊AWS的云资源&#xff0c;为期一年…

oracle11范围表空间实例

1.表分区&#xff1a;范围分区&#xff0c;散列分区&#xff0c;列表分区&#xff0c;组合分区&#xff0c;inetrval分区 范围分区&#xff1a;商品零售表&#xff0c;按照销售日期所在的季度创建4个分区 --先建立表空间&#xff1a;临时表空间是不可以存放数据的&#xff0c;…