Pyqt5界面显示matplotlib图形

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

class MyFigure(FigureCanvas):
    def __init__(self,width=5, height=4, dpi=100):
        #第一步:创建一个创建Figure
        self.fig = Figure(figsize=(width, height), dpi=dpi)
        #第二步:在父类中激活Figure窗口
        super().__init__(self.fig)
        self.axes = self.fig.add_subplot(111)

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("QLineEdit的学习")
        self.resize(500, 500)
        self.setup_ui()

    def setup_ui(self):
        self.QPushButten按钮()
        self.QGridLayout布局()


    def QPushButten按钮(self):
        # self.btn = QPushButton(self)
        # self.btn.setText("按钮")
        self.btn1 = QPushButton(self)
        self.btn1.setText("按钮1")

        self.btn2 = QPushButton(self)
        self.btn2.setText("按钮2")
        # self.btn3 = QPushButton(self)
        # self.btn3.setText("按钮3")

 
    def QGridLayout布局(self):
        F = MyFigure(width=3, height=2, dpi=100)
        F1 = MyFigure(width=3, height=2, dpi=100)

        t = np.arange(0.0, 5.0, 0.01)
        s = np.cos(2 * np.pi * t)
        y = np.sin(2 * np.pi * t)
        F.axes.plot(t, s)
        F.fig.suptitle("cos")
        F1.axes.plot(t, y)
        F1.fig.suptitle("sin")

        self.gridlayout = QGridLayout(self)  # 继承容器groupBox
        self.gridlayout.addWidget(F1, 0, 0)
        self.gridlayout.addWidget(self.btn1, 0, 1)
        self.gridlayout.addWidget(self.btn2, 1, 0)
        self.gridlayout.addWidget(F, 1, 1)



if __name__ == '__main__':
    import sys
    app = QApplication(sys.argv)

    window = Window()
    window.show()

    sys.exit(app.exec_())
PyQt5的界面中嵌入Matplotlib实际上非常简单。以下是代码示例,它将Matplotlib嵌入到一个PyQt5窗口应用程序中: ```python import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QMenu, QVBoxLayout, QHBoxLayout, QWidget, QPushButton from PyQt5.QtGui import QIcon from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas from matplotlib.figure import Figure class PlotCanvas(FigureCanvas): def __init__(self, parent=None, width=5, height=4, dpi=100): fig = Figure(figsize=(width, height), dpi=dpi) self.axes = fig.add_subplot(111) FigureCanvas.__init__(self, fig) self.setParent(parent) FigureCanvas.setSizePolicy(self, QSizePolicy.Expanding, QSizePolicy.Expanding) FigureCanvas.updateGeometry(self) class MainWindow(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("PyQt5 & Matplotlib Demo") self.setGeometry(100, 100, 800, 600) # Create the button to update the plot update_button = QPushButton("Update Plot", self) update_button.resize(100, 25) update_button.move(10, 10) update_button.clicked.connect(self.update_plot) # Create the canvas to display the plot canvas = PlotCanvas(self, width=5, height=4) canvas.move(0, 100) # Create a layout for the window layout = QVBoxLayout() layout.addWidget(update_button) layout.addWidget(canvas) # Create a central widget and set the layout central_widget = QWidget() central_widget.setLayout(layout) self.setCentralWidget(central_widget) self.update_plot() def update_plot(self): # Clear the figure self.canvas.axes.clear() # Create some data to plot x = [1, 2, 3, 4, 5] y = [3, 5, 1, 7, 9] # Plot the data self.canvas.axes.plot(x, y) # Update the canvas self.canvas.draw() if __name__ == '__main__': app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_()) ``` 这段代码首先定义了一个名为PlotCanvas的类,它是一个受Matplotlib支持的Qt小部件,并用于在Matplotlib图形上绘制。接下来,MainWindow类继承自QMainWindow并定义了一个PyQt5应用程序的主窗口。在构造函数中,我们创建了一个用于更新绘图的按钮,以及一个用于在其中绘制Matplotlib图形的PlotCanvas对象。然后,我们将两个控件添加到窗口布局中并显示窗口。最后,在update_plot方法中,我们定义了要绘制的数据以及绘图命令,然后将其呈现到Matplotlib图形上并更新窗口。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CV_er

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值