怎么在pyqt中显示matplotlib的绘图?

想要在pyqt中显示matplotlib的绘图,在绘图时,其实不必使用以下语句:

matplotlib.use("Qt5Agg")  # 声明使用QT5

最关键的语句是:

from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg

FigureCanvasQTAgg是一个渲染器,它的工作就是不停的drawing,从而将物体显示在屏幕上。
在这里可以理解为将matplotlib中的figure对象变为一个Qt widgets.

QGraphicsView、QGraphicsProxyWidget和QGraphicsScene是Qt中用于实现2D图形界面的重要类。

  • QGraphicsView是用于显示场景和处理用户交互的窗口部件
  • QGraphicsScene是一个图形场景,它可以容纳和管理大量的2D图形项(QGraphicsItem)
  • QGraphicsProxyWidget则是将QWidget封装成为一个QGraphicsItem以便添加到QGraphicsScene中
import sys
from PyQt5.QtWidgets import QApplication, QGraphicsScene, QGraphicsView, QGraphicsProxyWidget, QPushButton
import numpy
import matplotlib 
import matplotlib.pyplot as plt
# 其中构造函数Figure()用来创建一个类似Matlab的figure()或matplotlib.pyplot的figure()
from matplotlib.figure import Figure
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg# 自定义绘图类
class MyFigure(FigureCanvasQTAgg):  # 表示MyFigure 继承 FigureCanvasQTAgg"""FigureCanvasQTAgg的最终的父类其实是QWidget。"""def __init__(self, parent=None):# 创建一个Figure对象self.fig = Figure(figsize=(10, 6), dpi=72)  # 新建一个figure# 在父类中激活Figure,同时继承父类属性# 此句必不可少,否则不能显示图形super(MyFigure,self).__init__(self.fig) # 执行父类的__init__函数,使得我们能够调用父类的init中的属性self.axes = self.fig.add_subplot(111)  # 建立一个子图,如果要建立复合图,可以在这里修改# plt.clf() # 每次绘图的时候,清除上一次的绘图# 创造数据numpy.random.seed(1)x = numpy.random.uniform(-3, 3, 256)y = numpy.random.uniform(-3, 3, 256)# 进行绘图self.axes.triplot(x, y)self.axes.set(xlim=(-3, 3), ylim=(-3, 3))self.fig.canvas.draw()   if __name__ == "__main__":# 创建了一个QApplication实例app = QApplication(sys.argv)# QGraphicsScene是一个图形场景,它可以容纳和管理大量的2D图形项(QGraphicsItem)# 创建一个QGraphicsScenescene = QGraphicsScene()# 创建了一个QGraphicsView实例# QGraphicsView是用于显示绘图的窗口部件# 在绘图窗口中显示图形场景# 把QGraphicsScene添加到QGraphicsView中显示view = QGraphicsView(scene)# 实例化自定义的绘图myfig = MyFigure()# QGraphicsProxyWidget则是将QWidget封装成为一个QGraphicsItem# 以便添加到QGraphicsScene中proxy = QGraphicsProxyWidget()proxy.setWidget(myfig)""" 以上代码将myfig封装成为一个QGraphicsItem """# 将QGraphicsProxyWidget添加到场景中# 在场景中显示自定义的绘图scene.addItem(proxy)view.show()sys.exit(app.exec_())

以上代码中,首先我们创建了一个QApplication实例和一个QGraphicsScene实例。
然后创建了一个QPushButton实例作为QGraphicsProxyWidget的子控件
接着将自定义的绘图,封装成一个QGraphicsProxyWidget,并将其添加到场景QGraphicsScene中。
最后,我们创建了一个QGraphicsView实例,并将其设置为显示我们绘图的图片。
在这里插入图片描述

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

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

相关文章

学 Python 具体能干什么?

Python 是一种功能强大、用途广泛的编程语言,因其简洁易读的语法和丰富的库生态系统而备受欢迎。学习 Python后,你可以从事以下几方面的工作: 1. Web 开发 Python 有很多流行的 Web 框架,如: Django:一个…

Android studio的Gradle出问题

Gradle sync failed: Plugin [id: com.android.application, version: 7.1.1, apply: false] was not found in any of the following sources: 在src里面的build.gradle中 plugins { id ‘com.android.application’ } 的上面加上 buildscript {repositories {jcenter()}depen…

从 0 开始实现一个网页聊天室 (小型项目)

实现功能 用户注册和登录好友列表展示会话列表展示: 显示当前正在进行哪些会话 (单聊 / 群聊) , 选中好友列表中的某个好友, 会生成对应的会话实时通信, A给B发送消息, B的聊天界面 / 会话界面能立刻显示新的消息 TODO: 添加好友功能用户头像显示传输图片 / 表情包历史消息搜…

禅道密码正确但是登录异常处理

禅道密码正确,但是登录提示密码错误的异常处理 排查内容 # 1、服务器异常,存储空间、数据库异常 # 2、服务异常,文件丢失等异常问题定位 # 1、df -h 排查服务器存储空间 # 2、根据my.php排查数据库连接是否正常 # 3、修改my.pho,debugtrue…

探索切片索引:列表反转的艺术

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言:列表反转的挑战 二、切片索引的基本概念 三、切片索引实现列表反转 …

vs2013使用qt Linguist以及tr不生效问题

一、qt Linguist(语言家)步骤流程 1、创建翻译文件,在qt选项中 2.选择对应所需的语言,得到.ts后缀的翻译文件 3.创建.pro文件,并将.ts配置在.pro文件中 3.使用qt Linguist 打开创建好的以.ts为后缀的翻译文件,按图所示…

细粒度图像分类论文(AAM模型方法)阅读笔记

细粒度图像分类论文阅读笔记 摘要Abstract1. 用于细粒度图像分类的聚合注意力模块1.1 文献摘要1.2 研究背景1.3 本文创新点1.4 计算机视觉中的注意力机制1.5 模型方法1.5.1 聚合注意力模块1.5.2 通道注意力模块通道注意力代码实现 1.5.3 空间注意力模块空间注意力代码实现 1.5.…

【软件设计师】面向对象技术

1.面向对象基础 1.1 基本概念 方法重载是函数名字相同,参数列表不同 组成 即组合,指整体与部分的关系,整体与部分生命周期相同 聚合 关联关系的一个特例,是体现整体与部分,即使has-a的关系,此时整体与部分…

【LakeHouse】Apache Iceberg + Amoro 助力网易构建云原生湖仓

Apache Iceberg Amoro 助力网易构建云原生湖仓 1.云原生湖仓背景与挑战2.Apache Iceberg 、Amoro 与云原生2.1 Apache Iceberg2.2 Amoro 简介 3.Apache Iceberg Amoro 云原生实践3.1 云上湖仓案例一3.2 云上湖仓案例二3.3 云上湖仓案例三 4.Amoro 未来发展规划 出品社区&…

【代码随想录——回溯算法二周目】

1. 组合总和 var (path []intres [][]int )func combinationSum(candidates []int, target int) [][]int {path make([]int, 0)res make([][]int, 0)dfs(candidates,target,0,0)return res }func dfs(candidates []int, target int,tempTarget int,start int) {if tempTarg…

Django-auth组件

Django-auth组件 1 表结构 我们从python manage.py migrate为我们创建的auth组件内置的表开始看 auth_user:用户表存储用户信息(登录admin后台) 里面的字段分两类:用户基本信息(用户名,邮箱,密…

华为OD机试【找出通过车辆最多颜色】(java)(100分)

1、题目描述 在一个狭小的路口,每秒只能通过一辆车,假设车辆的颜色只有 3 种,找出 N 秒内经过的最多颜色的车辆数量。 三种颜色编号为0 ,1 ,2。 2、输入描述 第一行输入的是通过的车辆颜色信息[0,1,1,2] &#xff0…

Three.js——二维平面、二维圆、自定义二维图形、立方体、球体、圆柱体、圆环、扭结、多面体、文字

个人简介 👀个人主页: 前端杂货铺 ⚡开源项目: rich-vue3 (基于 Vue3 TS Pinia Element Plus Spring全家桶 MySQL) 🙋‍♂️学习方向: 主攻前端方向,正逐渐往全干发展 &#x1…

RabbitMQ-默认读、写方式介绍

1、RabbitMQ简介 rabbitmq是一个开源的消息中间件,主要有以下用途,分别是: 应用解耦:通过使用RabbitMQ,不同的应用程序之间可以通过消息进行通信,从而降低应用程序之间的直接依赖性,提高系统的…

功率电感的设计步骤

文章目录 1:高导磁气隙(铁氧体)1.1设计原理1.2 设计步骤 2 铁粉芯2.1:设计原理2.2:设计步骤 TI电感设计 学习视频原链接 截图 1 截图1 截图1 截图 2 截图2 截图2 1:高导磁气隙(铁氧体&#…

基于机器学习判断面部微表情发现哪些人更容易诊有帕金森病

1. 概述 帕金森病(Parkinson’s disease,PD)是一种慢性、进展性的神经退行性疾病,主要影响运动系统。该病症以大脑中黑质致密部多巴胺能神经元的逐渐丧失为特征,导致多巴胺(一种重要的神经递质&#xff09…

【Qt】深入探索Qt窗口与对话框:从创建到管理:QDockWidget(浮动窗口)、QDialog(对话框)

文章目录 前言:1. 浮动窗口2. 对话框介绍2.1. 示例:主窗口中,通过点击按钮,弹出一个新的对话框。2.2. 创建自定义对话框2.2.1. 纯代码的方式2.2.2. 图形化界面的方式 3. 模态对话框 和 非模态对话框4. Qt 内置对话框4.1. 消息对话…

Hybrid Block Storage for Efficient Cloud Volume Service——论文泛读

TOS 2023 Paper 论文阅读笔记整理 问题 传统桌面和服务器应用程序向云的迁移给底层云存储带来了高性能、高可靠性和低成本的挑战。由于这些传统应用程序的I/O模式和一致性要求,与采用特定编程模型和范式(如MapReduce[22]和RDD[52])的云原生…

香橙派AIpro(OrangePi AIPro)开发板初测评

开发板简介 最近,我拿到手一款Orange Pi AI Pro 开发板,它是香橙派联合华为精心打造的高性能AI 开发板,最早发布于2023年12月,其搭载了昇腾AI 处理器,可提供8TOPS INT8 的计算能力,内存提供了8GB 和16GB两…

基于jeecgboot-vue3的Flowable新建流程定义(一)

因为这个项目license问题无法开源&#xff0c;更多技术支持与服务请加入我的知识星球。 1、vue3版本因为流程分类是动态的&#xff0c;不再固定了&#xff0c;所以新建的时候需要选择建立哪种流程类型的流程 代码如下&#xff1a; <!-- 选择模型的流程类型对话框 -->&…