怎么在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

相关文章

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

怎么用idea创建一个SpringBoot项目

《怎么用idea创建一个SpringBoot项目》本文介绍了在IDEA中创建SpringBoot项目的步骤,包括环境准备(JDK1.8+、Maven3.2.5+)、使用SpringInitializr... 目录如何在idea中创建一个SpringBoot项目环境准备1.1打开IDEA,点击New新建一个项

SpringSecurity显示用户账号已被锁定的原因及解决方案

《SpringSecurity显示用户账号已被锁定的原因及解决方案》SpringSecurity中用户账号被锁定问题源于UserDetails接口方法返回值错误,解决方案是修正isAccountNon... 目录SpringSecurity显示用户账号已被锁定的解决方案1.问题出现前的工作2.问题出现原因各

qt5cored.dll报错怎么解决? 电脑qt5cored.dll文件丢失修复技巧

《qt5cored.dll报错怎么解决?电脑qt5cored.dll文件丢失修复技巧》在进行软件安装或运行程序时,有时会遇到由于找不到qt5core.dll,无法继续执行代码,这个问题可能是由于该文... 遇到qt5cored.dll文件错误时,可能会导致基于 Qt 开发的应用程序无法正常运行或启动。这种错

电脑提示xlstat4.dll丢失怎么修复? xlstat4.dll文件丢失处理办法

《电脑提示xlstat4.dll丢失怎么修复?xlstat4.dll文件丢失处理办法》长时间使用电脑,大家多少都会遇到类似dll文件丢失的情况,不过,解决这一问题其实并不复杂,下面我们就来看看xls... 在Windows操作系统中,xlstat4.dll是一个重要的动态链接库文件,通常用于支持各种应用程序

RedisTemplate默认序列化方式显示中文乱码的解决

《RedisTemplate默认序列化方式显示中文乱码的解决》本文主要介绍了SpringDataRedis默认使用JdkSerializationRedisSerializer导致数据乱码,文中通过示... 目录1. 问题原因2. 解决方案3. 配置类示例4. 配置说明5. 使用示例6. 验证存储结果7.

使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)

《使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)》字体设计和矢量图形处理是编程中一个有趣且实用的领域,通过Python的matplotlib库,我们可以轻松将字体轮廓... 目录背景知识字体轮廓的表示实现步骤1. 安装依赖库2. 准备数据3. 解析路径指令4. 绘制图形关键

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.

Mac备忘录怎么导出/备份和云同步? Mac备忘录使用技巧

《Mac备忘录怎么导出/备份和云同步?Mac备忘录使用技巧》备忘录作为iOS里简单而又不可或缺的一个系统应用,上手容易,可以满足我们日常生活中各种记录的需求,今天我们就来看看Mac备忘录的导出、... 「备忘录」是 MAC 上的一款常用应用,它可以帮助我们捕捉灵感、记录待办事项或保存重要信息。为了便于在不同

idea中project的显示问题及解决

《idea中project的显示问题及解决》:本文主要介绍idea中project的显示问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录idea中project的显示问题清除配置重China编程新生成配置总结idea中project的显示问题新建空的pr