
PyQt与Matplotlib画图结合
发布日期:2021-05-07 14:29:41
浏览次数:20
分类:原创文章
本文共 2144 字,大约阅读时间需要 7 分钟。
实现matplotlib图形通过PyQt5+Qt5在GUI中呈现步骤:
第一步,通过matplotlib.backends.backend_qt5agg类来连接PyQt5:
import matplotlibmatplotlib.use("Qt5Agg") # 声明使用QT5from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvasfrom matplotlib.figure import Figurefrom PyQt5 import QtWidgets,QtCorefrom PyQt5.QtWidgets import QMainWindow,QApplicationimport sys
第二步,具体图形代码实现部分,例:
class Figure_Canvas(FigureCanvas): # 通过继承FigureCanvas类,使得该类既是一个PyQt5的Qwidget,又是一个matplotlib的FigureCanvas,这是连接pyqt5与matplotlib的关键 def __init__(self, parent=None, width=11, height=5, dpi=100): fig = Figure(figsize=(width, height), dpi=100) # 创建一个Figure,注意:该Figure为matplotlib下的figure,不是matplotlib.pyplot下面的figure FigureCanvas.__init__(self, fig) # 初始化父类 self.setParent(parent) self.axes = fig.add_subplot(111) # 调用figure下面的add_subplot方法,类似于matplotlib.pyplot下面的subplot方法 def test(self): x = [1,2,3,4,5,6,7,8,9] y = [23,21,32,13,3,132,13,3,1] self.axes.plot(x, y)
第三步,GUI上通过控件呈现matplotlib画出来的图形——通过QtWidgets.QGraphicsView控件来实现:
class Mytest(QMainWindow): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) # 设置窗口标题 self.setWindowTitle('My First App') self.setFixedSize(800, 600) # ===通过graphicview来显示图形 self.graphicview = QtWidgets.QGraphicsView() # 第一步,创建一个QGraphicsView self.graphicview.setObjectName("graphicview") dr = Figure_Canvas() #实例化一个FigureCanvas dr.test() # 画图 graphicscene = QtWidgets.QGraphicsScene() # 第三步,创建一个QGraphicsScene,因为加载的图形(FigureCanvas)不能直接放到graphicview控件中,必须先放到graphicScene,然后再把graphicscene放到graphicview中 graphicscene.addWidget(dr) # 第四步,把图形放到QGraphicsScene中,注意:图形是作为一个QWidget放到QGraphicsScene中的 self.graphicview.setScene(graphicscene) # 第五步,把QGraphicsScene放入QGraphicsView self.graphicview.show() # 最后,调用show方法呈现图形!Voila!! self.setCentralWidget(self.graphicview) self.graphicview.setFixedSize(800,600)if __name__ == '__main__': app = QApplication(sys.argv) mytest=Mytest() mytest.show() app.exec_()
搞懂这篇文章里的每一句话,水平就足够通过PyQt5制作GUI实现绘图功能。
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2025年04月04日 01时25分42秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
px4调试bug--添加mavlink_log_info信息
2019-03-05
redis替换字符串命令
2019-03-05
redis向数组中添加值并查看数组长度
2019-03-05
python3基础梳理11python中模块和包
2019-03-05
JS编写一个函数,计算三个不同数字的大小,按从小到大顺序打印(穷举法)
2019-03-05
jQuery实现轮播图效果
2019-03-05
mybatis中like的注意
2019-03-05
sqlplus的基本使用
2019-03-05
oracle删除表重复数据
2019-03-05
Oracle删除主表数据
2019-03-05
js中两种定时器,setTimeout和setInterval实现验证码发送
2019-03-05
Oracle常用SQL
2019-03-05
技术美术面试问题整理
2019-03-05
Redis分布式锁原理
2019-03-05
【备份】求极限笔记
2019-03-05
C++学习记录 四、基于多态的企业职工系统
2019-03-05
C++学习记录 五、C++提高编程(2)
2019-03-05
面试问道nginx优化怎么做的
2019-03-05
自学linux毕业shell面试题
2019-03-05