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

2024-05-26 19:52

本文主要是介绍怎么在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实例,并将其设置为显示我们绘图的图片。
在这里插入图片描述

这篇关于怎么在pyqt中显示matplotlib的绘图?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1005430

相关文章

怎么关闭Ubuntu无人值守升级? Ubuntu禁止自动更新的技巧

《怎么关闭Ubuntu无人值守升级?Ubuntu禁止自动更新的技巧》UbuntuLinux系统禁止自动更新的时候,提示“无人值守升级在关机期间,请不要关闭计算机进程”,该怎么解决这个问题?详细请看... 本教程教你如何处理无人值守的升级,即 Ubuntu linux 的自动系统更新。来源:https://

Ubuntu系统怎么安装Warp? 新一代AI 终端神器安装使用方法

《Ubuntu系统怎么安装Warp?新一代AI终端神器安装使用方法》Warp是一款使用Rust开发的现代化AI终端工具,该怎么再Ubuntu系统中安装使用呢?下面我们就来看看详细教程... Warp Terminal 是一款使用 Rust 开发的现代化「AI 终端」工具。最初它只支持 MACOS,但在 20

LinuxMint怎么安装? Linux Mint22下载安装图文教程

《LinuxMint怎么安装?LinuxMint22下载安装图文教程》LinuxMint22发布以后,有很多新功能,很多朋友想要下载并安装,该怎么操作呢?下面我们就来看看详细安装指南... linux Mint 是一款基于 Ubuntu 的流行发行版,凭借其现代、精致、易于使用的特性,深受小伙伴们所喜爱。对

macOS怎么轻松更换App图标? Mac电脑图标更换指南

《macOS怎么轻松更换App图标?Mac电脑图标更换指南》想要给你的Mac电脑按照自己的喜好来更换App图标?其实非常简单,只需要两步就能搞定,下面我来详细讲解一下... 虽然 MACOS 的个性化定制选项已经「缩水」,不如早期版本那么丰富,www.chinasem.cn但我们仍然可以按照自己的喜好来更换

电脑显示hdmi无信号怎么办? 电脑显示器无信号的终极解决指南

《电脑显示hdmi无信号怎么办?电脑显示器无信号的终极解决指南》HDMI无信号的问题却让人头疼不已,遇到这种情况该怎么办?针对这种情况,我们可以采取一系列步骤来逐一排查并解决问题,以下是详细的方法... 无论你是试图为笔记本电脑设置多个显示器还是使用外部显示器,都可能会弹出“无HDMI信号”错误。此消息可能

Ubuntu 怎么启用 Universe 和 Multiverse 软件源?

《Ubuntu怎么启用Universe和Multiverse软件源?》在Ubuntu中,软件源是用于获取和安装软件的服务器,通过设置和管理软件源,您可以确保系统能够从可靠的来源获取最新的软件... Ubuntu 是一款广受认可且声誉良好的开源操作系统,允许用户通过其庞大的软件包来定制和增强计算体验。这些软件

Ubuntu 24.04 LTS怎么关闭 Ubuntu Pro 更新提示弹窗?

《Ubuntu24.04LTS怎么关闭UbuntuPro更新提示弹窗?》Ubuntu每次开机都会弹窗提示安全更新,设置里最多只能取消自动下载,自动更新,但无法做到直接让自动更新的弹窗不出现,... 如果你正在使用 Ubuntu 24.04 LTS,可能会注意到——在使用「软件更新器」或运行 APT 命令时,

TP-LINK/水星和hasivo交换机怎么选? 三款网管交换机系统功能对比

《TP-LINK/水星和hasivo交换机怎么选?三款网管交换机系统功能对比》今天选了三款都是”8+1″的2.5G网管交换机,分别是TP-LINK水星和hasivo交换机,该怎么选呢?这些交换机功... TP-LINK、水星和hasivo这三台交换机都是”8+1″的2.5G网管交换机,我手里的China编程has

AI绘图怎么变现?想做点副业的小白必看!

在科技飞速发展的今天,AI绘图作为一种新兴技术,不仅改变了艺术创作的方式,也为创作者提供了多种变现途径。本文将详细探讨几种常见的AI绘图变现方式,帮助创作者更好地利用这一技术实现经济收益。 更多实操教程和AI绘画工具,可以扫描下方,免费获取 定制服务:个性化的创意商机 个性化定制 AI绘图技术能够根据用户需求生成个性化的头像、壁纸、插画等作品。例如,姓氏头像在电商平台上非常受欢迎,

W外链微信推广短连接怎么做?

制作微信推广链接的难点分析 一、内容创作难度 制作微信推广链接时,首先需要创作有吸引力的内容。这不仅要求内容本身有趣、有价值,还要能够激起人们的分享欲望。对于许多企业和个人来说,尤其是那些缺乏创意和写作能力的人来说,这是制作微信推广链接的一大难点。 二、精准定位难度 微信用户群体庞大,不同用户的需求和兴趣各异。因此,制作推广链接时需要精准定位目标受众,以便更有效地吸引他们点击并分享链接