实现matplotlib图形通过PyQt5+Qt5在GUI中呈现步骤:

第一步,通过matplotlib.backends.backend_qt5agg类来连接PyQt5:

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

第二步,具体图形代码实现部分,例:

 class Figure_Canvas(FigureCanvas):   # 通过继承FigureCanvas类,使得该类既是一个PyQt5的Qwidget,又是一个matplotlib的FigureCanvas,这是连接pyqt5与matplot                                          lib的关键

     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控件来实现:(代码部分仅呈现QtWidgets.QGraphicsView的实现步骤)

 self.gridLayoutWidget = QtWidgets.QWidget()
self.gridLayoutWidget.setGeometry(QtCore.QRect(180, 10, 1100, 500)) # 定义gridLayout控件的大小和位置,4个数字分别为左边坐标,上边坐标,长,宽
self.gridLayoutWidget.setObjectName("gridLayoutWidget")
self.gridLayout_2 = QtWidgets.QGridLayout(self.gridLayoutWidget)
self.gridLayout_2.setContentsMargins(0, 0, 0, 0) # 在gridLayoutWidget 上创建一个网格Layout,注意以gridLayoutWidget为参
self.gridLayout_2.setObjectName("gridLayout_2")
# ===通过graphicview来显示图形
self.graphicview = QtWidgets.QGraphicsView(self.gridLayoutWidget) # 第一步,创建一个QGraphicsView,注意同样以gridLayoutWidget为参
self.graphicview.setObjectName("graphicview")
self.gridLayout_2.addWidget(self.graphicview, 0, 0) 第二步,将该QGraphicsView放入Layout中 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!!

最新文章

  1. css3中的animation
  2. CSV文件的读取 导出
  3. ssh隧道(端口转发)
  4. 《Python 学习手册4th》 第十章 Python语句简介
  5. Delphi 多文件拖放获取路径示例
  6. arttemplate函数摘录
  7. sublime text3 安装package control 插件,解决访问被墙的问题
  8. 结构型---装饰者模式(Decorator Pattern)
  9. loadrunner 脚本优化-参数化之Parameter List参数同行取值
  10. djaogo 图片上传与读取
  11. 在Tomcat中部署Spring jpetstore
  12. 【转】HttpHandler的认识与加深理解
  13. 高可用OpenStack(Queen版)集群-1. 集群环境
  14. http webservice socket的区别
  15. MYSQL 缓存
  16. VBox&vmware虚拟机安装Linux及Linux基础入门学习
  17. 像黑客一样!Chrome 完全键盘操作指南(原生快捷键 + Vimium 插件)
  18. 记一次Log4j2日志无法输出的 心酸史
  19. Android开发中dp、dpi、px的区别(转)
  20. (转)linux常见故障一:linux 文件系统变只读

热门文章

  1. (三)hibernate单表操作
  2. cxf发布 webservice服务
  3. ffmpeg command
  4. centos 搭建 搭建uwsgi服务
  5. windows下MongoDB的安装,配置与开机自启动
  6. 简单实例,说明自动生成Makefile的详细过程
  7. python随机数seed用法
  8. U3D安卓下OnApplicationQuit不执行的解决方法
  9. C++ 简单的日志类
  10. iOS-获取苹果商店iPhone应用程序编号APPID-应用中跳转到AppStore中的其他应用