将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 相关文章推荐
使用django-suit为django 1.7 admin后台添加模板
Nov 18 Python
Python调用C++程序的方法详解
Jan 24 Python
Python编程实现两个文件夹里文件的对比功能示例【包含内容的对比】
Jun 20 Python
Pandas中把dataframe转成array的方法
Apr 13 Python
python 列表,数组和矩阵sum的用法及区别介绍
Jun 28 Python
解决python3 urllib 链接中有中文的问题
Jul 16 Python
python实现网站微信登录的示例代码
Sep 18 Python
python判断单向链表是否包括环,若包含则计算环入口的节点实例分析
Oct 23 Python
pytorch 实现张量tensor,图片,CPU,GPU,数组等的转换
Jan 13 Python
40行Python代码实现天气预报和每日鸡汤推送功能
Feb 27 Python
更新升级python和pip版本后不生效的问题解决
Apr 17 Python
python神经网络Xception模型
May 06 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
php通过文件头检测文件类型通用代码类(zip,rar等)
2010/10/19 PHP
php实现mysql备份恢复分卷处理的方法
2014/12/26 PHP
PHP版微信公众平台红包API
2015/04/02 PHP
php下载远程大文件(获取远程文件大小)的实例
2017/06/17 PHP
PHP简单实现图片格式转换(jpg转png,gif转png等)
2019/10/30 PHP
模拟用户操作Input元素,不会触发相应事件
2007/05/11 Javascript
JS中获取数据库中的值的方法
2013/07/14 Javascript
extjs表格文本启用选择复制功能具体实现
2013/10/11 Javascript
jQuery中removeData()方法用法实例
2014/12/27 Javascript
js实现从数组里随机获取元素
2015/01/12 Javascript
原生javascript实现Tab选项卡切换功能
2015/01/12 Javascript
javascript实现可拖动变色并关闭层窗口实例
2015/05/15 Javascript
js实现密码强度检测【附示例】
2016/03/30 Javascript
浅谈JavaScript的push(),pop(),concat()方法
2016/06/03 Javascript
vue.js单页面应用实例的简单实现
2017/04/10 Javascript
Angular中$state.go页面跳转并传递参数的方法
2017/05/09 Javascript
javascript 中select框触发事件过程的分析
2017/08/01 Javascript
ionic3 懒加载
2017/08/16 Javascript
详解VUE项目中安装和使用vant组件
2019/04/28 Javascript
分享python数据统计的一些小技巧
2016/07/21 Python
python中文分词,使用结巴分词对python进行分词(实例讲解)
2017/11/14 Python
Python使用matplotlib绘图无法显示中文问题的解决方法
2018/03/14 Python
用python打印1~20的整数实例讲解
2019/07/01 Python
python实现图像拼接
2020/03/05 Python
Python 实现网课实时监控自动签到、打卡功能
2020/03/12 Python
TensorFlow实现批量归一化操作的示例
2020/04/22 Python
python读取hdfs并返回dataframe教程
2020/06/05 Python
Bally巴利英国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/05/07 全球购物
Osklen官方在线商店:巴西服装品牌
2019/04/25 全球购物
买卖正宗运动鞋:GOAT
2019/12/06 全球购物
竞选班长演讲稿
2013/12/30 职场文书
小学生运动会报道稿
2014/09/12 职场文书
校园环保广播稿(3篇)
2014/09/15 职场文书
机关作风建设剖析材料
2014/10/11 职场文书
2016年党员公开承诺书格式范文
2016/03/24 职场文书
MySQL update set 和 and的区别
2021/05/08 MySQL