在PyQt5中插入matplotlab绘图面板

python 复制代码
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QSizePolicy, QPushButton
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
import random
 
class App(QMainWindow):
    def __init__(self):
        super().__init__()
        self.title = '示例图像'
        self.initUI()
        self.m.plot()  #调用PlotCanvas的函数画图

    def initUI(self):
        self.setWindowTitle(self.title)
        self.setGeometry(100, 100, 900, 400) 
        m = PlotCanvas(self, width=7, height=4)
        m.move(0,0)
        self.m = m
        button = QPushButton('PyQt5 button', self)
        button.setToolTip('This s an example button')
        button.move(700,0)
        button.resize(140,100)
        self.show()
 
class PlotCanvas(FigureCanvas):
    def __init__(self, parent=None, width=7, height=4, dpi=100):
        fig = Figure(figsize=(width, height), dpi=dpi) #matplotlab的Figure类
        self.axes = fig.add_subplot(111)
 
        FigureCanvas.__init__(self, fig)
        self.setParent(parent)
 
        FigureCanvas.setSizePolicy(self,
                QSizePolicy.Expanding,
                QSizePolicy.Expanding)
        FigureCanvas.updateGeometry(self)
 
    def plot(self):
        data = [random.random() for i in range(25)]
        #ax = self.figure.clear()
        #ax = self.figure.add_subplot(111)
        ax = self.figure.axes[0]  #获取原有的第一个axes
        ax.plot(data, 'r-')  #画图折线图,红色----
        ax.set_title('PyQt Matplotlib Example')
        self.draw()
 
if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = App()
    sys.exit(app.exec_())

添加一个继承自FigureCanvas的PlotCanvas类。

PlotCanvas类放置在PyQt窗口面板中。

在PlotCanvas类中调用matplotlab的Figure类,再通过获取axes,通过axes画图。

相关推荐
qq_380619164 分钟前
html怎么用deno运行_Deno如何作为本地服务器运行HTML文件
jvm·数据库·python
小鱼~~4 分钟前
进程和线程
python
Elastic 中国社区官方博客11 分钟前
在 Elastic 中使用 OpenTelemetry 内容包可视化 OpenTelemetry 数据
大数据·开发语言·数据库·elasticsearch·搜索引擎
断眉的派大星13 分钟前
pytorch中保存训练模型和加载训练模型的用法
人工智能·pytorch·python
C+++Python14 分钟前
如何学习Python的应用领域知识?
开发语言·python·学习
疯狂打码的少年16 分钟前
【Day12 Java转Python】Python工程的“骨架”——模块、包与__name__
java·开发语言·python
ueotek23 分钟前
Ansys Zemax | 在 MATLAB 或 Python 中使用 ZOS-API 进行光线追迹的批次处理
python·matlab·ansys·zemax·光学软件
全栈开发圈26 分钟前
新书速览|MATLAB数据分析与可视化实践:视频教学版
开发语言·matlab·数据分析
网域小星球31 分钟前
C 语言从 0 入门(二十二)|内存四区:栈、堆、全局、常量区深度解析
c语言·开发语言
u01074754634 分钟前
mysql如何实现高可用集群架构_基于MHA环境搭建与部署
jvm·数据库·python