【Python_Matplotlib学习笔记(二)】Matplotlib绘图嵌入PySide2图形界面

前言

在本文中主要介绍 如何基于 FigureCanvasQTAgg 类实现 Matplotlib 绘图嵌入 PySide2 图形界面。

正文

1、FigureCanvasQTAgg类介绍

Matplotlib 提供了一个 FigureCanvasQTAgg 类,把 Matplotlib 绘图嵌入 QT(PyQT5、PySide2) 中 。必须将 ‘Figure对象’ 作为参数传递给 Qt 基类。其主要实现的功能是 将图像从 Agg 画布复制到qt.drawable。在 QT 中,当一个小部件显示在屏幕上时,所有的绘图都应该在这里完成。

2、基于FigureCanvasQTAgg类实现Matplotlib绘图嵌入PySide2图形界面

操作步骤如下

  1. 基于 PySide2 创建主窗体

    central_widget = QWidget(self) # 创建一个主窗口
    
  2. 创建 Figure 对象和 Axes 对象

    fig = Figure() # 创建Figure对象
    ax = fig.add_subplot(1,1,1) #  创建Axes对象
    ax.plot([1, 2, 3, 4], [10, 20, 30, 40]) # 绘图
    
  3. 创建 FigureCanvasQTAgg 对象,绑定 Figure 对象到 FigureCanvasQTAgg 对象上

    self.canvas = FigureCanvas(fig) # 创建FigureCanvasQTAgg对象
    
  4. 基于 PySide2 创建布局

    layout = QVBoxLayout(central_widget) # 创建一个垂直布局
    
  5. 将 FigureCanvasQTAgg 对象添加到布局中

    layout.addWidget(self.canvas) # 将FigureCanvasQTAgg对象添加到布局中
    

3、示例代码及实现效果

import sys
from PySide2.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure

class MainWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)

        # 创建一个主窗口,并设置居中显示
        central_widget = QWidget(self)
        self.setCentralWidget(central_widget)

        # 创建一个垂直布局
        layout = QVBoxLayout(central_widget)

        # 创建Figure对象和FigureCanvas对象,绑定Figure对象到canvas上,并添加到布局中
        fig = Figure()
        self.canvas = FigureCanvas(fig)
        layout.addWidget(self.canvas)

        # 绘制matplotlib图形,设置标题
        ax = fig.add_subplot(1,1,1)
        ax.plot([1, 2, 3, 4], [10, 20, 30, 40])
        ax.set_title('matplotlib plot')

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

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/sallyyellow/article/details/130325866