pyside6/pyqt5/pyside2/pyqt6绘制图形

虽然可以在 PySide6 中嵌入 matplotlib 图,但这种体验并不完全是原生的。对于简单且高度交互的绘图,您可能需要考虑改用 PyQtGraph。PyQtGraph 建立在 PySide6 原生 QGraphicsScene 之上,提供更好的绘图性能,特别是对于实时数据,并提供交互性和使用 Qt 图形小部件轻松自定义绘图的能力。在本章中,我们将介绍使用 PyQtGraph 创建绘图微件的第一步,然后演示使用线条颜色、线型、轴标签、背景颜色和绘制多条线来自定义绘图。

为了能够将 PyQtGraph 与 PySide6 一起使用,您首先需要将包安装到您的 Python 环境中。您可以使用 pip 来执行此操作,pip install pyqtgraph 安装即可。

创建 PyQtGraph 小部件 在 PyQtGraph 中,所有绘图都是使用 PlotWidget 小部件创建的。此小组件提供了一个包含的画布,可以在该画布上添加和配置任何类型的绘图。在引擎盖下,这个绘图小部件使用Qt原生QGraphicsScene,这意味着它可以快速高效,但很容易与应用程序的其余部分集成。可以像创建任何其他小部件一样创建 PlotWidget。

import sys
from PySide6 import QtWidgets
import pyqtgraph as pg # import PyQtGraph after Qtclass MainWindow(QtWidgets.QMainWindow):def __init__(self):super().__init__()self.resize(1000,800)self.graphWidget = pg.PlotWidget()self.setCentralWidget(self.graphWidget)hour = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]temperature = [30, 32, 34, 32, 33, 31, 29, 32, 35, 45]# plot data: x, y valuesself.graphWidget.plot(hour, temperature)app = QtWidgets.QApplication(sys.argv)
main = MainWindow()
main.show()
app.exec()

PyQtGraph 的默认绘图样式非常裸露 - 黑色背景和细线(几乎看不见)白线。下面的例子中,我们将看看 PyQtGraph 中有哪些选项可以改善绘图的外观和可用性。样式图

样式绘制 PyQtGraph 使用 Qt 的 QGraphicsScene 来渲染图形。这使我们能够访问所有用于绘图的标准Qt线条和形状样式选项。但是,PyQtGraph 提供了一个 API,用于使用它们来绘制绘图和管理绘图画布。下面我们将介绍创建和自定义自己的绘图所需的最常见的样式功能。背景颜色 从上面的应用骨架开始,我们可以通过在 PlotWidget 实例(在 self.graphWidget 中)调用 .setBackground 来更改背景颜色。下面的代码通过传入字符串设置背景颜色

self.graphWidget.setBackground('w')

根据 matplotlib 中使用的标准颜色,可以使用单个字母提供许多简单颜色。它们并不奇怪,除了“k”用于黑色。表 13.常见颜色代码 颜色 字母代码 蓝色 b 绿色 g 红色 r 青色 (亮蓝绿色) c 品红色 (亮粉色) m 黄色 y 黑色 k 白色 w 除了这些单字母代码外,您还可以使用十六进制符号设置颜色,例如。#672922 作为字符串。self.graphWidget.setBackground('#bbccaa') # 十六进制 RGB 和 RGBA 值可以分别作为 3 元组或 4 元组传入,values 为0-255

self.graphWidget.setBackground((100,50,255)) # RGB each 0-255
self.graphWidget.setBackground((100,50,255,25)) # RGBA (A = alpha)

最后,您还可以直接使用Qt的QColor类型指定颜色。565 self.graphWidget.setBackground(QtGui.QColor(100,50,254,25)) 如果您在应用程序的其他位置使用特定的 QColor 对象,或者将打印背景设置为默认的 GUI 背景颜色,这将非常有用。color = self.palette().color(QtGui.QPalette.Window) # 获取默认窗口背景,self.graphWidget.setBackground(color) 线条颜色、宽度和样式 PyQtGraph 中的线条是使用标准 Qt QPen 类型绘制的。

color = self.palette().color(QtGui.QPalette.Window) # Get the default
window background,
self.graphWidget.setBackground(color)

线条颜色、宽度和样式 PyQtGraph 中的线条是使用标准 Qt QPen 类型绘制的。这使您可以像在任何其他QGraphicsScene绘图中一样完全控制线条绘制。要使用笔绘制一条线,您只需创建一个新的 QPen 实例并将其传递到 plot 方法中即可。下面我们创建一个 QPen 对象,传入一个 3 元组的 int 值,指定一个 RGB 值(全红色)。我们也可以通过传递“r”或QColor对象来定义它。然后我们用 pen 参数将其传递到绘图中。pen = pg.mkPen(color=(255, 0, 0)) self.graphWidget.plot(小时,温度,pen=pen)

示例如下:

import sys
from PySide6 import QtWidgets
import pyqtgraph as pg # import PyQtGraph after Qt
class MainWindow(QtWidgets.QMainWindow):def __init__(self):super().__init__()self.graphWidget = pg.PlotWidget()self.setCentralWidget(self.graphWidget)hour = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]temperature = [30, 32, 34, 32, 33, 31, 29, 32, 35, 45]self.graphWidget.setBackground("w")pen = pg.mkPen(color=(255, 0, 0))self.graphWidget.plot(hour, temperature, pen=pen)
app = QtWidgets.QApplication(sys.argv)
main = MainWindow()
main.show()
app.exec()

通过更改 QPen 对象,我们可以更改线条的外观,包括使用标准 Qt 线条样式的线宽(像素和虚线、虚线等)。例如,以下示例创建一条 15px 宽的蓝色虚线。

pen = pg.mkPen(color=(0, 255, 0), width=15, style=QtCore.Qt.DashLine)

可以使用标准的Qt线条样式,包括Qt.SolidLine、Qt.DashLine、Qt.DotLine、Qt.DashDotLine和Qt.DashDotDotLine。下图显示了这些行的示例,您可以在Qt文档中内容。

未完待续。。。。。。。

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

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

相关文章

试过了,ChatGPT确实不用注册就可以使用了!

看到官网说不用登录也可以直接使用ChatGPT 我们来试一下 直接打开官网 默认是直接进入了chatgpt3.5的聊天界面 之前是默认进的登录页面 聊一下试试 直接回复了,目前属于未登录状态,挺好! 来试下ChatGPT4 跳转到了登录页面 目前来看gpt4还…

HTML常用文本标签以及注释文本

目录 前言: 1.标题标签: 前言: 实践: 总结: 2.段落标签: 前言: 段落中的空格: 总结: 3.文本格式化标签: 前言: 和标签的区别: 和标记之间的区别: 总结: 4.如…

go入门到精通

初识Go语言 Go语言介绍 Go语言是什么 2009年11月10日,Go语言正式成为开源编程语言家庭的一员。 Go语言(或称Golang)是云计算时代的C语言。Go语言的诞生是为了让程序员有更高的生产效率,Go语言专门针对多处理器系统应用程序的编…

Spring面试常见问题

目录 1、为什么要用Spring框架?2、有了spring为什么又出现了 springboot?3、springboot出现后为什么又出现了spring cloud?4、SpringBoot自动配置(重点)5、SpringBoot启动流程(重点)6、简单谈一…

在Linux中创建新用户的三种方法,总有一种适合你

将用户添加到Linux计算机是一项基本的管理任务,有几种方法可以实现这一点。每种创建用户的方法都有优点和缺点,我们将向你介绍三种不同的用户创建方法。 Linux计算机为什么需要用户 一台没有用户的个人计算机用处并不大。Linux支持多个用户。无论他们是同时登录并共享计算机…

PostgreSQL PGCA/PGCE/PGCM包通过率

PostgreSQL认证课程一共分为三个等级(PGCA-PGCE-PGCM),特别注意:参加认证须有同级别合格培训记录,且不可跳级报考 PGCA-PGCE-PGCM都是线上考试,每两个月一次全国统考,详细考试时间可以参考下方表…

github拉取的项目添加至自己的仓库

想把GitHub的开源项目拉到本地进行二开,研究了一下上传到gitee的步骤: 步骤 gitee新建仓库,仓库名与本地文件夹的名称一致,建好后gitee的页面也会有显示git命令 打开项目目录,右键打开git bash(或者在gi…

照片改格式怎么改?这两种方法帮你解决

不同的平台和应用程序可能对照片格式有不同的要求,将照片转换为适当的格式可以确保它们在网页、社交媒体、聊天应用等上加载和显示良好,常见的网络可接受的照片格式包括jpg、png和webp,那么怎么去将照片改格式呢?下面介绍几个比较简单的方法…

C# WPF编程-元素绑定

C# WPF编程-元素绑定 将元素绑定到一起绑定表达式绑定错误绑定模式代码创建绑定移除绑定使用代码检索绑定多绑定绑定更新绑定延时 数据绑定是一种关系,该关系告诉WPF从源对象提取一下信息,并用这些信息设置目标对象的属性。目标属性始终是依赖项属性&…

oracle19c安装-aarch64

建议 参考oracle官方文档提供的软硬件要求 https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/operating-system-checklist-for-oracle-database-installation-on-linux.html#GUID-E5C0A90E-7750-45D9-A8BC-C7319ED934F0 建议使用OracleLinux8.6及以上操作…

数据结构:非比较排序

非比较排序都具有很大的局限性,包括技术排序,基数排序,桶排序等 计数排序 时间复杂度:O(N) 空间复杂度:O(range) 适用范围 数据的范围集中的数组进行排序,不适合数据分散的数组 方法 统计每个数据出现的次数为n 建立一个相同大小的数组,将每个数据都初始化为0 然后遍历…

niushop单商户V5多店版源码分享三端uniapp打包方法包括PC端_小程序或h5端打包_收银端打包_APP端打包_商户端

目前多店版有四端uniapp,包括PC端uniapp,商家端uniapp,收银端uniapp,门店手机端uniapp,下面我总结下这些端的打包流程希望能帮助到大家,需要交流的可以看我昵称或者点我头像关注我分享代码和教程 一.niush…

【微众银行笔试题汇总】 2024-03-31-微众银行春招笔试题-三语言题解(CPP/Python/Java)

🍭 大家好这里是KK爱Coding ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新微众银行近期的春秋招笔试题汇总~ 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢&…

Java面试必问题24:线程池的拒绝策略有哪些 synchronized 和 lock 的区别 (重点)

以上列出的是Java线程池中常见的拒绝策略,具体可以根据实际情况选择合适的拒绝策略,也可以自定义实现RejectedExecutionHandler接口来定义自己的拒绝策略。默认的拒绝策略是AbortPolicy,即直接抛出异常。 最简回答:线程池的拒绝策…

YOLOv9改进策略:主干系列 | Transformer架构ConvNeXt 网络在检测中大放异彩

💡💡💡本文改进内容:Transformer架构 ConvNeXt 网络在图像分类和识别、分割领域大放异彩,同时对比 Swin-T 模型,在多种任务中其模型的大小和准确率均有一些提升,模型的 FLOPs 较大的减小且 Acc 有部分提高。 💡💡💡将此Transformer ConvNeXt 网络引入到YOLOv9…

【prometheus】k8s集群部署Grafana安装并接入Promethues数据源

目录 一、概述 1.1 优点 1.2 特点 二、grafana部署 三、grafana接入Promethues数据源 四、grafana可视化展示物理节点指标数据 五、grafana可视化展示k8s组件指标数据 5.1 kube-state-metrics简介 5.2 安装kube-state-metrics组件 一、概述 Grafana是一款用Go语言开发…

软考 - 系统架构设计师 - 数据流图案例题

阅读以下关于系统数据分析与建模的叙述,在答题纸上回答问题1至问题3。 【说明】 某公司正在研发一套新的库存管理系统。系统中一个关键事件是接收供应商供货。项目组系统分析员小王花了大量时间在仓库观察了整个事件的处理过程,并开发出该过程所执行活动…

vue 响应式原理 Object.defineProperty(obj,‘属性名A‘,options);

目录 self简单讲解1. 视图影响数据2. 数据影响视图3. 视图数据双向影响页面展示 百度 self 简单讲解 get和set方法是ES5中提供的,因为是方法,所以可以进行判断,get 一般是要通过 return 返回的;而 set 是设置,不用返回…

GT收发器第六篇_GT channel内部时钟关系

文章目录 一、TX端时钟二、RX端时钟 一、TX端时钟 TX端可分为4个区域,分别为FPGA TX接口、PCS靠FPGA侧、PCS靠PMA侧、PMA,如下图。GTX/GTH发射器包括TXBUFFER和TX相位校准电路,以解决时钟域之间的相位差。TX相位校准电路用于TXBUFFER被旁路时…

书生·浦语大模型开源体系(二)笔记

💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢…