怎么在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′|┛ 嗷~~ 目录 一、引言:列表反转的挑战 二、切片索引的基本概念 三、切片索引实现列表反转 …

程序员副业赚钱的底层逻辑

赚钱就像玩拼图游戏,要懂得把面包屑组装成为一面包 分享一点心得:你会发现赚钱的商机其实就像个拼图游戏,有很多面包屑、很多碎片,真的、假的、有价值的、误导的,都散落在各处。 你需要一一拾取,一一甄别…

gerrit自启动方案—windows服务

在windows系统中,想将gerrit做成开机自启动一般使用两个方法 1.用.bat脚本方法 编写.bat脚本,并将脚本文件生成快捷方式,放置在电脑的启动目录下,电脑开机或重启后,脚本会自动启动 (winR 输入 shell:start…

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.…

Git命令之江湖百晓生

Git 命令大全 第一章:Git 简介 Git 是一个开源的分布式版本控制系统,由 Linus Torvalds 于 2005 年创建,用于有效、高速地处理从小到大的项目。它是一个命令行工具,用于跟踪和管理源代码历史记录。 第二章:Git 的 1…

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

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

C++语言学习(六)—— 类与对象(二)

目录 一、对象数组 二、对象指针 三、this 指针 四、类类型作为参数类型的三种形式 4.1 对象本身作为参数 4.2 对象指针作为参数 4.3 对象引用作为参数 五、静态成员 5.1 静态数据成员 5.2 静态成员函数 六、友元机制 6.1 友元函数 6.2 友元类 七、类的组合 八、…

【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…

嵌入式0基础开始学习 ⅠC语言(4)循环结构

0.问题引入 求0~100数据之和: int sum 0; sum 1234....100; 废手,那么有没有一种好的方法取操作呢? int sum 0; int i 1; sum sum i; // sum 01; …

GB28181协议中常用SDP信息的含义

u字段:u行应填写视音频文件的URI。该URI取值有两种方式:简捷方式和普通方式。简捷方式直接采用产生该历史媒体的媒体源(如某个摄像头)的设备ID(应符合6.1.2的规定)以及相关参数(如回放类型、下载…

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

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

在Mac电脑下怎么部署QAnything?

在Mac电脑下部署QAnything,可以选择使用纯Python环境进行部署,这种方式不依赖GPU,适合在Mac等笔记本电脑上运行。以下是基于QAnything的纯Python环境安装教程的步骤[18]: 安装要求 Python 3.10(建议使用Anaconda3来管…