**

Matplotlib图画PyQt5展示

**
qt designer制作界面
Matplotlib教程(三)之PyQt5展示

保存文件名为gui.ui文件,保存后用PyUIC编译为gui.py文件

新建main.py文件用于编写逻辑文件

#!/ust/bin/python3
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from gui import Ui_Form #导入界面文件

import numpy as np
import matplotlib
matplotlib.use("Qt5Agg")  # 声明使用QT5
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
import matplotlib.pyplot as plt

'''
创建一个matplotlib图形绘制类,通过继承FigureCanvas类,使得该类既是一个PyQt5的Qwidget,又是一个matplotlib的FigureCanvas,这是连接pyqt5与matplotlib的关键
'''
class MyFigure(FigureCanvas):
    def __init__(self,width, height, dpi):
         # 创建一个Figure,该Figure为matplotlib下的Figure,不是matplotlib.pyplot下面的Figure
        self.fig = Figure(figsize=(width, height), dpi=dpi)
         # 在父类中**Figure窗口,此句必不可少,否则不能显示图形
        super(MyFigure,self).__init__(self.fig)
         # 调用Figure下面的add_subplot方法,类似于matplotlib.pyplot下面的subplot(1,1,1)方法
        self.axes = self.fig.add_subplot(111)

class Mainwindow(QWidget, Ui_Form):
    def __init__(self):
        super(Mainwindow,self).__init__()
        self.setupUi(self)

        self.F = MyFigure(width=3, height=2, dpi=100)
        self.countdot()  #采集需要画的点位
        self.plotcos(self.t,self.s)  #画 图
         # 在GUI的groupBox中创建一个布局,用于添加MyFigure类的实例(即图形)。
        self.gridlayout = QGridLayout(self.groupBox)
        self.gridlayout.addWidget(self.F)

    def countdot(self):
        self.t = np.arange(0.0, 5.0, 0.01)
        self.s = np.cos(2 * np.pi * self.t)
        # self.t = [0,1,2,3,4,5]
        # self.s = [0,1,2,3,4,5]
    def plotcos(self, x, y):
        self.F.axes.plot(x, y)
        self.F.fig.suptitle("cos")

if __name__ == '__main__':
    app = QApplication(sys.argv)
    main = Mainwindow()
    main.show()
    sys.exit(app.exec_())

运行效果
Matplotlib教程(三)之PyQt5展示

相关文章:

  • 2021-07-16
  • 2021-10-16
  • 2022-12-23
  • 2021-12-26
  • 2022-01-09
  • 2022-01-10
猜你喜欢
  • 2022-01-31
  • 2021-08-02
  • 2022-12-23
  • 2023-03-19
  • 2021-11-24
相关资源
相似解决方案