> 文章列表 > 【Python_Matplotlib学习笔记(二)】Matplotlib绘图嵌入PySide2图形界面

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

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

Matplotlib绘图嵌入PySide2图形界面

  • 前言
  • 正文
    • 1、FigureCanvasQTAgg类介绍
    • 2、基于FigureCanvasQTAgg类实现Matplotlib绘图嵌入PySide2图形界面
    • 3、示例代码及实现效果

前言

在本文中主要介绍 如何基于 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 Figureclass 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_())

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