将matplotlib绘图嵌入pyqt的方法示例


Posted in Python onJanuary 08, 2020

我的终极整理,供参考

# coding:utf-8
import matplotlib
# 使用 matplotlib中的FigureCanvas (在使用 Qt5 Backends中 FigureCanvas继承自QtWidgets.QWidget)
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from PyQt5 import QtCore, QtWidgets, QtGui
from PyQt5.QtWidgets import QDialog, QPushButton, QVBoxLayout
import matplotlib.pyplot as plt
import numpy as np
import sys
"""学好pyplot API和面向对象 API搞定matplotlib绘图显示在GUI界面上"""
 
class Main_window(QDialog):
  def __init__(self):
    super().__init__()
    # 三步走,定Figure,定Axes,定FigureCanvas
    # 1 直接一段代码搞定figure和axes
    self.figure, (self.ax1, self.ax2) = plt.subplots(figsize=(13, 3), ncols=2)
 
    # 2 先创建figure再创建axes
    # 2.1 用plt.figure() / Figure() 创建figure, 推荐前者
    self.figure = plt.figure(figsize=(5,3), facecolor='#FFD7C4')
    # self.figure = Figure(figsize=(5,3), facecolor='#FFD7C4')
    # 2.2 用plt.subplots() / plt.add_subplot() 创建axes, 推荐前者
    (self.ax1, self.ax2) = self.figure.subplots(1, 2)
    # ax1 = self.figure.add_subplot(121)
    # ax2 = self.figure.add_subplot(122)
 
    # 3 绑定figure到canvas上
    self.canvas = FigureCanvas(self.figure)
 
    self.button_draw = QPushButton("绘图")
    self.button_draw.clicked.connect(self.Draw)
 
    # 设置布局
    layout = QVBoxLayout()
    layout.addWidget(self.canvas)
    layout.addWidget(self.button_draw)
    self.setLayout(layout)
 
  def Draw(self):
    AgeList = ['10', '21', '12', '14', '25']
    NameList = ['Tom', 'Jon', 'Alice', 'Mike', 'Mary']
    # 将AgeList中的数据转化为int类型
    AgeList = list(map(int, AgeList))
 
    # 将x,y转化为numpy数据类型,对于matplotlib很重要
    self.x = np.arange(len(NameList)) + 1
    self.y = np.array(AgeList)
 
    # tick_label后边跟x轴上的值,(可选选项:color后面跟柱型的颜色,width后边跟柱体的宽度)
    self.ax1.bar(range(len(NameList)), AgeList, tick_label=NameList, color='green', width=0.5)
    for a, b in zip(self.x, self.y):
      self.ax1.text(a-1, b, '%d' % b, ha='center', va='bottom')
    plt.title("Demo")
 
    pos = self.ax2.imshow(np.random.random((100, 100)), cmap=plt.cm.BuPu_r)
    self.figure.colorbar(pos, ax=self.ax2)   # 终于可以用colorbar了
 
    self.canvas.draw()
 
 
# 运行程序
if __name__ == '__main__':
  app = QtWidgets.QApplication(sys.argv)
  main_window = Main_window()
  main_window.show()
  app.exec()

总结就是,想要在特定的位置放matplotlib绘图还是要用面向对象的API,但混合使用pyplot的API可以使代码更简单。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
浅谈Python的异常处理
Jun 19 Python
python读取文本中数据并转化为DataFrame的实例
Apr 10 Python
Python实现的求解最小公倍数算法示例
May 03 Python
python感知机实现代码
Jan 18 Python
Python文件读写常见用法总结
Feb 22 Python
wxpython绘制圆角窗体
Nov 18 Python
解决Python3.8用pip安装turtle-0.0.2出现错误问题
Feb 11 Python
python 实现在无序数组中找到中位数方法
Mar 03 Python
django 数据库 get_or_create函数返回值是tuple的问题
May 15 Python
使用pygame实现垃圾分类小游戏功能(已获校级二等奖)
Jul 23 Python
简单了解Python字典copy与赋值的区别
Sep 16 Python
Flask-SocketIO服务端安装及使用代码示例
Nov 26 Python
pyinstaller还原python代码过程图解
Jan 08 #Python
python Tensor和Array对比分析
Jan 08 #Python
Pycharm小白级简单使用教程
Jan 08 #Python
python如何实现不可变字典inmutabledict
Jan 08 #Python
PyQt5 closeEvent关闭事件退出提示框原理解析
Jan 08 #Python
python从内存地址上加载python对象过程详解
Jan 08 #Python
PyCharm第一次安装及使用教程
Jan 08 #Python
You might like
Laravel中encrypt和decrypt的实现方法
2017/09/24 PHP
PHP 7.4 新语法之箭头函数实例详解
2019/05/09 PHP
使用JQuery和s3captche实现一个水果名字的验证
2009/08/14 Javascript
JS OOP包机制,类创建的方法定义
2009/11/02 Javascript
自己整理的一个javascript日期处理函数
2010/10/16 Javascript
js函数名与form表单元素同名冲突的问题
2014/03/07 Javascript
一个JavaScript防止表单重复提交的实例
2014/10/21 Javascript
在HTML中插入JavaScript代码的示例
2015/06/03 Javascript
完美实现js焦点轮播效果(二)(图片可滚动)
2017/03/07 Javascript
Bootstrap DateTime Picker日历控件简单应用
2017/03/25 Javascript
Vue报错:Uncaught TypeError: Cannot assign to read only property’exports‘ of object’#‘的解决方法
2017/06/17 Javascript
详解javascript 变量提升(Hoisting)
2019/03/12 Javascript
如何利用javascript接收json信息并进行处理
2020/08/06 Javascript
[28:07]完美世界DOTA2联赛PWL S3 Phoenix vs INK ICE 第二场 12.13
2020/12/17 DOTA
利用Python操作消息队列RabbitMQ的方法教程
2017/07/19 Python
你眼中的Python大牛 应该都有这份书单
2017/10/31 Python
django rest framework之请求与响应(详解)
2017/11/06 Python
Python cookbook(数据结构与算法)对切片命名清除索引的方法
2018/03/13 Python
利用python将pdf输出为txt的实例讲解
2018/04/23 Python
Python+OpenCV目标跟踪实现基本的运动检测
2018/07/10 Python
解决python3 HTMLTestRunner测试报告中文乱码的问题
2018/12/17 Python
Python for循环搭配else常见问题解决
2020/02/11 Python
用python打开摄像头并把图像传回qq邮箱(Pyinstaller打包)
2020/05/17 Python
python访问hdfs的操作
2020/06/06 Python
html5 利用canvas实现超级玛丽简单动画
2013/09/06 HTML / CSS
Andrew Marc官网:设计师外套的领先制造商
2019/10/30 全球购物
C++的几个面试题附答案
2016/08/03 面试题
西部世纪.net笔试题面试题
2014/04/03 面试题
大学三年计划书范文
2014/04/30 职场文书
教师竞聘上岗演讲稿
2014/09/03 职场文书
贷款承诺书
2015/01/20 职场文书
2015年人事工作总结范文
2015/04/09 职场文书
毕业实习证明范本
2015/06/16 职场文书
Html5通过数据流方式播放视频的实现
2021/04/27 HTML / CSS
分享几个实用的CSS代码块
2022/06/10 HTML / CSS
Win11控制面板快捷键是什么?Win11打开控制面板的方法汇总
2022/07/07 数码科技