步骤
1、引入plt
2、引入FigureCanvas
3、生成figure
4、取得FigureCanvas
5、将FigureCanvas加入容器中
6、调用plt函数来绘图
代码
import sys
# 1、引入plt
import matplotlib.pyplot as plt
import numpy as np
from PyQt5 import QtWidgets, QtCore
# 2、引入FigureCanvas
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from PyQt5.QtWidgets import QApplication, QVBoxLayout, QHBoxLayout, QWidget, QPushButton, QMainWindow
# 由pyuic5生成
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(629, 370)
self.pushButton = QtWidgets.QPushButton(Form)
self.pushButton.setGeometry(QtCore.QRect(20, 20, 101, 41))
self.pushButton.setObjectName("pushButton")
self.widget = QtWidgets.QWidget(Form)
self.widget.setGeometry(QtCore.QRect(30, 80, 571, 261))
self.widget.setObjectName("widget")
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Form"))
self.pushButton.setText(_translate("Form", "画图"))
class Main:
def __init__(self):
app = QApplication(sys.argv)
self.mainwindow = QMainWindow()
self.form = Ui_Form()
self.form.setupUi(self.mainwindow)
# 绘图slot
self.form.pushButton.clicked.connect(self.pbClick)
# 3、生成figure
self.fig = plt.figure(figsize=(2, 1), dpi=100)
# 4、FigureCanvas
self.canvas = FigureCanvas(self.fig)
# 5、加入容器
layout=QHBoxLayout()
self.form.widget.setLayout(layout)
layout.addWidget(self.canvas )
self.mainwindow.show()
sys.exit(app.exec_())
def pbClick(self):
# 6、绘图
plt.clf()
x = np.linspace(0, 4 * np.pi, 1000)
y = np.sin(x)
plt.plot(x, y)
self.canvas.draw()
if __name__ == "__main__":
Main()