目录

一、导入模块

二、自定义一个matplotlib窗口类Figure

三、利用QT_designer绘制窗口

四、写逻辑代码

五、结果展示


一、导入模块

import matplotlibmatplotlib.use("Qt5Agg")
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg
from matplotlib.figure import Figure
from matplotlib import pyplotpyplot.rcParams['font.sans-serif'] = ['SimHei']
pyplot.rcParams['axes.unicode_minus'] = False

二、自定义一个matplotlib窗口类Figure

# 重写一个matplotlib图像绘制类
class MyFigure(FigureCanvasQTAgg):def __init__(self,width=5,height=4,dpi = 100):# 1、创建一个绘制窗口Figure对象self.fig = Figure(figsize=(width,height),dpi=dpi)# 2、在父类中激活Figure窗口,同时继承父类属性super(MyFigure, self).__init__(self.fig)# 这里就是绘制图像、示例def plotSin(self,x,y):self.axes0 = self.fig.add_subplot(111)self.axes0.plot(x,y)

三、利用QT_designer绘制窗口

转换为py文件

# -*- coding: utf-8 -*-# Form implementation generated from reading ui file 'TDA_ShiftFlip.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.from PyQt5 import QtCore, QtGui, QtWidgetsclass Ui_MainWindow(object):def setupUi(self, MainWindow):MainWindow.setObjectName("MainWindow")MainWindow.resize(520, 396)self.centralwidget = QtWidgets.QWidget(MainWindow)self.centralwidget.setObjectName("centralwidget")self.graphicsView_2 = QtWidgets.QGraphicsView(self.centralwidget)self.graphicsView_2.setGeometry(QtCore.QRect(40, 70, 391, 221))self.graphicsView_2.setObjectName("graphicsView_2")MainWindow.setCentralWidget(self.centralwidget)self.statusbar = QtWidgets.QStatusBar(MainWindow)self.statusbar.setObjectName("statusbar")MainWindow.setStatusBar(self.statusbar)self.retranslateUi(MainWindow)QtCore.QMetaObject.connectSlotsByName(MainWindow)def retranslateUi(self, MainWindow):_translate = QtCore.QCoreApplication.translateMainWindow.setWindowTitle(_translate("MainWindow", "TDA_ShiftFlip"))if __name__ == "__main__":import sysapp = QtWidgets.QApplication(sys.argv)MainWindow = QtWidgets.QMainWindow()ui = Ui_MainWindow()ui.setupUi(MainWindow)MainWindow.show()sys.exit(app.exec_())

四、写逻辑代码

1、实例化matplotlib窗口,此时这个实例类似于一个部件

F1 = MyFigure(width=5, height=4, dpi=100)

2、将窗口分成多个窗口

F1.axes1 = F1.fig.add_subplot(221)# 表示将窗口分成2*2的布局

3、在窗口绘制图像

     x = np.arange(0, 50)y = np.random.rand(50)F1.axes1.hist(y, bins=50)F1.axes1.plot(x, y)F1.axes1.bar(x, y)F1.axes1.set_title("hist")

4、(非必选)将窗口缩放成graphicView控件大小

width,height = self.graphicsView_2.width(),self.graphicsView_2.height()
F1.resize(width,height)

5、创建一个场景,将窗口放置到场景中,将场景放置到graphicsView控件

       self.scene = QGraphicsScene()  # 创建一个场景self.scene.addWidget(F1)  # 将图形元素添加到场景中self.graphicsView_2.setScene(self.scene)  # 将创建添加到图形视图显示窗口

逻辑全部代码:

from matplotlibFigure import MyFigurefrom PyQt5 import QtCore, QtWidgets
from PyQt5.Qt import QThread, pyqtSignal, QIcon
from PyQt5.QtWidgets import QMessageBox, QGraphicsScene, QGraphicsPixmapItem, QGridLayout
from PyQt5.QtWidgets import QFileDialog
from PyQt5.QtGui import QIcon, QImage, QPixmap
from PyQt5.QtCore import Qtimport sys
import cv2
import numpy as np
from matplotlib import pyplot as pltclass TDASUILogic(QtWidgets.QMainWindow, TDASUI):def __init__(self):super(TDASUILogic, self).__init__()self.setupUi(self)self.plotother()def plotother(self):F1 = MyFigure(width=5, height=4, dpi=100)F1.axes1 = F1.fig.add_subplot(111)x = np.arange(0, 50)y = np.random.rand(50)F1.axes1.hist(y, bins=50)F1.axes1.plot(x, y)F1.axes1.bar(x, y)F1.axes1.set_title("hist")width,height = self.graphicsView_2.width(),self.graphicsView_2.height()F1.resize(width,height)self.scene = QGraphicsScene()  # 创建一个场景self.scene.addWidget(F1)  # 将图形元素添加到场景中self.graphicsView_2.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)self.graphicsView_2.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)self.graphicsView_2.setScene(self.scene)  # 将创建添加到图形视图显示窗口

五、结果展示

【pyqt5学习】——graphicView显示matplotlib图像相关推荐

  1. 【pyqt5学习】——groupBox显示matplotlib图像

    目录 一.导入模块 二.创建matplotlib窗口类 三.qt_designer设计窗口 四.逻辑代码 五.结果展示 一.导入模块 import matplotlibmatplotlib.use(& ...

  2. 【pyqt5学习】——graphicView显示opencv图像

    imgpath = "result.jpg"img = cv2.imread(imgpath) # 读取图像img = cv2.cvtColor(img, cv2.COLOR_BG ...

  3. opencv-python教程学习系列2-读取/显示/保存图像

    前言 opencv-python教程学习系列记录学习python-opencv过程的点滴,本文主要介绍图像的读取.显示以及保存,坚持学习,共同进步. 系列教程参照OpenCV-Python中文教程: ...

  4. pyQT5 学习使用 笔记 六 pyQt5+opencv 显示海康GIGE相机动态视频流

    opencv 读取 海康GIGE相机视频流 新项目中我们需要使用opencv读取海康威视的工业相机 MV-CA060-10GM 的视频流进行处理.那么首先我们要读取到相机的视频流,总所周知 openc ...

  5. 使用Python,Matplotlib显示RGB图像

    使用Python,Matplotlib显示RGB格式的 图像 1. 效果图 2. 源码 参考 这篇博客将介绍如何使用matplotlib显示RGB图像.具体是使用matplotlib,pyplot和m ...

  6. Pycharm Matplotlib 图像不显示问题

    pycharm中显示python画的图_mingyuli的博客-CSDN博客_pycharm怎么显示图形 Pycharm Matplotlib 图像不显示问题_geanwen的博客-CSDN博客_ma ...

  7. Jupyter Lab——无法显示matplotlib绘制的图像

    1 显示"<Figure size ***x*** with * Axes>"却没有显示出图像 需要加上这样的声明: %matplotlib inline

  8. matplotlib显示opencv图像有色差

    OpenCV中的图像是以BGR的通道顺序存储的,但Matplotlib是以RGB模式显示的,所以直接在Matplotlib中显示OpenCV图像会出现问题,因此需要转换一下: import cv2 i ...

  9. 使用鼠标从Matplotlib显示的图像中取点,画框

    使用鼠标从Matplotlib显示的图像中取点,画框 #定义全局变量:PT表示鼠标从plt图中取到的点;默认情况下取左上角点和右下角点 PT=[]def on_press(event):if even ...

最新文章

  1. mybatis逆向工程配置文件怎么再偷懒(懒出天际)
  2. java红黑树_JAVA学习-红黑树详解
  3. 如何让 Drupal 使用 Wordpress 形式的编辑代码?
  4. MySQL5.7 Linux安装流程
  5. Java中判断两个Date时间段是否有交集的方法
  6. android底部导航栏下沉,【详细】手把手教你快速实现Android底部导航栏
  7. 微信小程序自定义授权弹框
  8. 法国 计算机金融 大学,捷报|GPA3.0,计算机转申金融,斩获法国顶级商学院录取!...
  9. java ldap操作实例_Java Spring Security示例教程中的2种设置LDAP Active Directory身份验证的方法...
  10. 为什么在生产中进行硒自动化测试对于您的下一个版本至关重要?
  11. mysql与django交互_django与mysql交互
  12. python数据分析实战案例logistic_Python机器学习随笔之logistic回归识别手写数字
  13. 计算机专业国培总结,2016年信息技术教师国培心得体会(2篇)
  14. 5g/4g工业无线路由器
  15. NumberFormat类
  16. matlab 语法_MATLAB中的语法
  17. android usb独占模式,Android USB主机模式和附件模式
  18. ubuntu 20.04配置fcitx5添加五笔拼音教程
  19. android源码编译并刷入nexus 6p手机
  20. Postman设置统一认证token

热门文章

  1. 【转】DB2 常用命令
  2. 剑指Offer_61_序列化二叉树
  3. spring -mvc 将对象封装json返回时删除掉对象中的属性注解方式
  4. SQL Server 2012安装图解
  5. windows apache 开启 GZIP
  6. Mac OS X Glut build instructions
  7. defer和async的原理与区别
  8. javascript --- [express+ vue2.x + elementUI]登陆的流程梳理
  9. /home文件夹重新划分独立分区
  10. Scrapy使用问题整理(转载)