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

 更新时间:2020年01月08日 11:54:51   作者:lemonade_117  
这篇文章主要介绍了将matplotlib绘图嵌入pyqt的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

我的终极整理,供参考

# 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画图实现同一结点多个柱状图的示例

    今天小编就为大家分享一篇Python画图实现同一结点多个柱状图的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • python生成器和yield关键字(完整代码)

    python生成器和yield关键字(完整代码)

    这篇文章主要介绍了python生成器和yield关键字,文章主要附上完整的代码及些许的解释说明,需要的小伙伴可以参考一下
    2022-01-01
  • python库sklearn常用操作

    python库sklearn常用操作

    sklearn是一个无论对于机器学习还是深度学习都必不可少的重要的库,里面包含了关于机器学习的几乎所有需要的功能,本文不会先整体介绍sklearn库,而是先从sklearn库中的一些具体实例入手,感兴趣的朋友一起看看吧
    2021-08-08
  • Python 经典算法100及解析(小结)

    Python 经典算法100及解析(小结)

    这篇文章主要介绍了Python 经典算法100及解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • Python3实现打格点算法的GPU加速实例详解

    Python3实现打格点算法的GPU加速实例详解

    这篇文章主要给大家介绍了关于Python3实现打格点算法的GPU加速的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用python具有一定的参考学习价值,需要的朋友可以参考下
    2021-09-09
  • matlab调用python的各种方法举例子详解

    matlab调用python的各种方法举例子详解

    为了发挥matlab的绘图优势+原先python写好的功能组合方式,下面这篇文章主要给大家介绍了关于matlab调用python的各种方法,需要的朋友可以参考下
    2023-09-09
  • Python中文分词库jieba(结巴分词)详细使用介绍

    Python中文分词库jieba(结巴分词)详细使用介绍

    这篇文章主要介绍了Python中文分词库jieba(结巴分词)提取词,加载词,修改词频,定义词库详细使用介绍,需要的朋友可以参考下
    2022-04-04
  • Python 内置logging 使用详细介绍

    Python 内置logging 使用详细介绍

    提供日志记录的接口和众多处理模块,供用户存储各种格式的日志,帮助调试程序或者记录程序运行过程中的输出信息,这篇文章主要介绍了Python 内置logging 使用讲解,需要的朋友可以参考下
    2022-07-07
  • python实现图片中文字分割效果

    python实现图片中文字分割效果

    这篇文章主要为大家详细介绍了python实现图片中文字分割效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • 详解python实现简单区块链结构

    详解python实现简单区块链结构

    区块链是一种数据结构,也是一个分布式数据库。这篇文章主要介绍了python实现简单区块链结构的相关知识,需要的朋友可以参考下
    2021-04-04

最新评论