当前位置: 首页 > news >正文

python之pyQt5实例:Matplotlib的应用

1、显示逻辑

1.1MatplotlibWidget.py

import sys
import random
import matplotlibmatplotlib.use("Qt5Agg")
from PyQt5 import QtCore
from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QSizePolicy, QWidget
from numpy import arange, sin, pi
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar
from matplotlib.figure import Figure
import matplotlib.pyplot as pltclass MyMplCanvas(FigureCanvas):"""FigureCanvas的最终的父类其实是QWidget。"""def __init__(self, parent=None, width=5, height=4, dpi=100):# 配置中文显示plt.rcParams['font.family'] = ['SimHei']  # 用来正常显示中文标签plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号self.fig = Figure(figsize=(width, height), dpi=dpi)  # 新建一个figureself.axes = self.fig.add_subplot(111)  # 建立一个子图,如果要建立复合图,可以在这里修改plt.clf() # 每次绘图的时候不保留上一次绘图的结果FigureCanvas.__init__(self, self.fig)self.setParent(parent)'''定义FigureCanvas的尺寸策略,这部分的意思是设置FigureCanvas,使之尽可能的向外填充空间。'''FigureCanvas.setSizePolicy(self,QSizePolicy.Expanding,QSizePolicy.Expanding)FigureCanvas.updateGeometry(self)'''绘制静态图,可以在这里定义自己的绘图逻辑'''def start_static_plot(self):self.fig.suptitle('测试静态图')t = arange(0.0, 3.0, 0.01)s = sin(2 * pi * t)self.axes.plot(t, s)self.axes.set_ylabel('静态图:Y轴')self.axes.set_xlabel('静态图:X轴')self.axes.grid(True)'''启动绘制动态图'''def start_dynamic_plot(self, *args, **kwargs):timer = QtCore.QTimer(self)timer.timeout.connect(self.update_figure)  # 每隔一段时间就会触发一次update_figure函数。timer.start(1000)  # 触发的时间间隔为1秒。'''动态图的绘图逻辑可以在这里修改'''def update_figure(self):self.fig.suptitle('测试动态图')l = [random.randint(0, 10) for i in range(4)]self.axes.plot([0, 1, 2, 3], l, 'r')self.axes.set_ylabel('动态图:Y轴')self.axes.set_xlabel('动态图:X轴')self.axes.grid(True)self.draw()class MatplotlibWidget(QWidget):def __init__(self, parent=None):super(MatplotlibWidget, self).__init__(parent)self.initUi()def initUi(self):self.layout = QVBoxLayout(self)self.mpl = MyMplCanvas(self, width=5, height=4, dpi=100)# self.mpl.start_static_plot() # 如果你想要初始化的时候就呈现静态图,请把这行注释去掉#self.mpl.start_dynamic_plot() # 如果你想要初始化的时候就呈现动态图,请把这行注释去掉self.mpl_ntb = NavigationToolbar(self.mpl, self)  # 添加完整的 toolbarself.layout.addWidget(self.mpl)self.layout.addWidget(self.mpl_ntb)

1.2Ui_matplotlib_pyqt.py

from PyQt5 import QtCore, QtGui, QtWidgets
from MatplotlibWidget import MatplotlibWidget
class Ui_MainWindow(object):def setupUi(self, MainWindow):MainWindow.setObjectName("MainWindow")MainWindow.resize(800, 600)self.centralwidget = QtWidgets.QWidget(MainWindow)self.centralwidget.setObjectName("centralwidget")self.matplotlibwidget_static = MatplotlibWidget(self.centralwidget)self.matplotlibwidget_static.setGeometry(QtCore.QRect(10, 0, 611, 271))self.matplotlibwidget_static.setObjectName("matplotlibwidget_static")self.pushButton = QtWidgets.QPushButton(self.centralwidget)self.pushButton.setGeometry(QtCore.QRect(670, 80, 75, 23))self.pushButton.setObjectName("pushButton")self.matplotlibwidget_dynamic = MatplotlibWidget(self.centralwidget)self.matplotlibwidget_dynamic.setEnabled(True)self.matplotlibwidget_dynamic.setGeometry(QtCore.QRect(10, 270, 611, 291))self.matplotlibwidget_dynamic.setObjectName("matplotlibwidget_dynamic")self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)self.pushButton_2.setGeometry(QtCore.QRect(670, 370, 75, 23))self.pushButton_2.setObjectName("pushButton_2")MainWindow.setCentralWidget(self.centralwidget)self.menubar = QtWidgets.QMenuBar(MainWindow)self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 23))self.menubar.setObjectName("menubar")MainWindow.setMenuBar(self.menubar)self.statusbar = QtWidgets.QStatusBar(MainWindow)self.statusbar.setObjectName("statusbar")MainWindow.setStatusBar(self.statusbar)self.retranslateUi(MainWindow)QtCore.QMetaObject.connectSlotsByName(MainWindow)def retranslateUi(self, MainWindow):_translate = QtCore.QCoreApplication.translateMainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))self.pushButton.setText(_translate("MainWindow", "显示静态图"))self.pushButton_2.setText(_translate("MainWindow", "显示动态图"))

2、业务逻辑

import sys
from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QMainWindow, QApplicationfrom Ui_matplotlib_pyqt import Ui_MainWindowclass MainWindow(QMainWindow, Ui_MainWindow):"""Class documentation goes here."""def __init__(self, parent=None):"""Constructor@param parent reference to the parent widget@type QWidget"""super(MainWindow, self).__init__(parent)self.setupUi(self)self.matplotlibwidget_dynamic.setVisible(False)self.matplotlibwidget_static.setVisible(False)@pyqtSlot()def on_pushButton_clicked(self):"""Slot documentation goes here."""self.matplotlibwidget_static.setVisible(True)self.matplotlibwidget_static.mpl.start_static_plot()@pyqtSlot()def on_pushButton_2_clicked(self):"""Slot documentation goes here."""self.matplotlibwidget_dynamic.setVisible(True)self.matplotlibwidget_dynamic.mpl.start_dynamic_plot()if __name__ == "__main__":app = QApplication(sys.argv)ui = MainWindow()ui.show()sys.exit(app.exec_())

相关文章:

python之pyQt5实例:Matplotlib的应用

1、显示逻辑 1.1MatplotlibWidget.py import sys import random import matplotlibmatplotlib.use("Qt5Agg") from PyQt5 import QtCore from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QSizePolicy, QWidget from numpy import arange, si…...

智囊AI-基于 ChatGPT 的 AI 工具产品 你的私人AI助手

智囊AI是一款基于 ChatGPT 的 AI 工具产品,主打免费、智能、方便,可以在此雇佣各种各样的免费智囊进行对话、自己创造和分享智囊、共享有趣有用的对话等。不过使用需要注册登录,可以使用自己的openai key或者使用网站提供的api key&#xff0…...

nginx配置vue前端代理

背景:做一个前后端分离的项目,我这里是vue3 view ts创建的前端项目,在前端配置跨域请求。 一、开发阶段 在vue.config.js中配置devserver的proxy进行代理请求配置,然后将所有请求改为/api开头的即可。但是这样配置只在开发阶段…...

【C语言】【数据存储】用%u打印char类型?用char存128?

1.题目一&#xff1a; #include <stdio.h> int main() {char a -128;printf("%u\n",a);return 0; }%u 是打印无符号整型 解题逻辑&#xff1a; 1. 原反补互换&#xff0c;截断 -128 原码&#xff1a;10000000…10000000 补码&#xff1a;11111111…10000000…...

git-git命令汇总

1.git 存储永久凭据 git config --global credential.helper store 2.git 查询分支或标签的引用 git show-ref 【标签名|分支名】 3.git 搜索关键分支和tag git tag -l *branch* --sortcommitterdate 4.git 删除标签 git tag -d v1.32 删除标签v1.32&#xff0c;参数d…...

自定义实现简易版ArrayList

文章目录 1.了解什么是顺序表2.实现哪些功能3.初始化ArrayList4.实现功能接口遍历顺序表判断顺序表是否已满添加元素指定下标添加元素自定义下标不合法异常判断顺序表是否为空查找指定元素是否存在查找指定元素返回下标获取指定下标的元素顺序表为空异常修改指定下标元素的值删…...

React中的Hooks--useReducer()

首先&#xff0c;useReducer是React提供的一个钩子函数&#xff0c;用于管理组件内部的状态。它可以接收一个reducer函数和初始状态&#xff0c;并返回一个包含状态和更新状态的函数的数组。 与之相反&#xff0c;Redux是一个独立的状态管理库&#xff0c;它可以在整个应用程序…...

DM@数理逻辑@命题公式及其赋值@真值表@公式分类

文章目录 abstract命题公式及其赋值命题常项命题变项 命题公式合式公式(命题公式)限定基本联结词的合适公式的定义合式公式中的0和1子公式 **公式的层次定义**分层加括号 命题公式的赋值和解释成真赋值成假赋值公式的书写规范括号的省略 真值表赋值方法数量构造真值表 公式分类…...

HTTP协议(超级详细)

HTTP协议介绍 基本介绍&#xff1a; HTTP&#xff1a;超文本传输协议&#xff0c;是从万维网服务器传输超文本到本地浏览器的传送协议HTTP是一种应用层协议&#xff0c;是基于TCP/IP通信协议来传送数据的&#xff0c;其中 HTTP1.0、HTTP1.1、HTTP2.0 均为 TCP 实现&#xff0…...

leetcode做题笔记135. 分发糖果

n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。 你需要按照以下要求&#xff0c;给这些孩子分发糖果&#xff1a; 每个孩子至少分配到 1 个糖果。相邻两个孩子评分更高的孩子会获得更多的糖果。 请你给每个孩子分发糖果&#xff0c;计算并返回需要准备的…...

Oracle数据库体系结构(三)_逻辑结构

Oracle逻辑存储结构,主要描述oracle 数据库内部数据的组织和管理方式&#xff0c;即在数据库管理系统的层面中如何组织和管理数据&#xff0c;与操作系统没有关系。逻辑存储结构时候物理存储机构的抽象体现&#xff0c;是不可见的&#xff0c;可以通过查询数据库数据字典了解逻…...

在 Python 中计算两个 GPS 点之间的距离

计算两个 GPS 点之间的距离是我们可以在 Python 框架内操作的地理和数学练习。 现在让我们看看如何使用 Python 执行此操作。 在 Python 中使用 Haversine 公式计算两个 GPS 点之间的距离 haversine 公式是用 Python 计算两个 GPS 点之间距离的一种简化方法,但它的计算是基于…...

影刀RPA解决WPS不存在的问题

问题阐述 明明电脑上已经安装了WPS&#xff0c;但影刀程序还是提示没有安装的问题 解决办法 1.打开WPS并关闭所有其他网页 2. 配置与修复 3.开始修复 出现这个框&#xff0c;就要关闭WPS&#xff0c;否则无法执行&#xff0c;关闭WPS不影响其修复 4.等待修复完成即可...

vue动态路由切换刷新保留历史路由搜索条件数据

最近有客户反映我们系统按条件查询完列表进入详情页后再返回列表页时页面没有展示他查询的那条数据&#xff0c;而是进入页面一贯会展示按无条件查询的数据&#xff0c;希望我们能对列表做查询缓存&#xff0c;那咱们就用keep-alive来实现一下 AppMain.vue include 属性绑定一个…...

免费:CAD批量转PDF工具,附下载地址

分享一款CAD 批量转PDF、打印的工具插件。能自动识别图框大小、自动识别比例、自动编号命名。重点&#xff01;重点&#xff01;重点&#xff01;自动将CAD的多张图纸一次性地、批量地转为PDF&#xff0c;或者打印。效果看下图&#xff1a; 适用环境&#xff1a; 32位系统 Auto…...

无涯教程-JavaScript - FACT函数

描述 The FACT function returns the factorial of a number. The factorial of a number is equal to 1&ast;2&ast;3&ast;...&ast; number. 语法 FACT (number)争论 Argument描述Required/OptionalNumberThe nonnegative number for which you want the f…...

UART 协议

文章目录 电气层硬件拓扑基本原理协议空闲位起始位数据位奇偶校验位无校验奇校验偶校验mark parityparity 停止位 波特率优缺点优点缺点 参考 UART(universal asynchronous receiver-transmitter) 通用异步收发器 分类特点导线2速度9600&#xff0c; 19200&#xff0c; 38400&…...

MySql中分割字符串

MySql中分割字符串 在MySql中分割字符串可以用到SUBSTRING_INDEX&#xff08;str, delim, count&#xff09; 参数解说       解释 str         需要拆分的字符串 delim         分隔符&#xff0c;通过某字符进行拆分 count          当 count 为正数&…...

Ubuntu 22.04安装过程

iso下载地址 Ubuntu Releases 1.进入引导菜单 选择Try or Install Ubuntu Server安装 2.选择安装语言 默认选择English 3.选择键盘布局 默认即可 4.选择安装服务器版本 最小化安装 5.配置网络 选择ipv4 选择自定义 DHCP也可 6.配置代理 有需要可以配置 这里跳过 7.软件源 …...

【算法|虚拟头节点|链表】移除链表元素

Leetcode203 移除链表元素 题目描述&#xff1a; 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,6,3,4,5,6], val 6 输出&#xf…...

express静态路由匹配引发的404错误

最近有一个react项目&#xff0c;我用webpack打包&#xff0c;然后使用express作为webserver跑起来。 但是在运行的时候&#xff0c;就白屏了&#xff0c;看console原来是报了404错误 可是代码里面明明有路由定义&#xff0c;为什么还是报404错误呢&#xff1f; app.get("…...

VHOST-SCSI代码分析(4)VHOST KICK机制

在VIRTIO框架中虚拟机通知QEMU数据准备好是通过操作MMIO&#xff0c;在KVM中将操作分发到QEMU中&#xff0c;由QEMU中模拟对应的MMIO操作&#xff08;图中红色部分&#xff09;。 VHOST框架虚拟机通知HOST内核数据准备好也是通过MMIO操作&#xff0c;但在函数vhost_dev_enable_…...

Docker Volume(存储卷)

文章目录 Docker Volume(存储卷)1.什么是存储卷&#xff1f;2.为什么需要存储卷&#xff1f;3. 存储卷的分类1) 管理卷Volume方式一&#xff1a;Volume命令操作方式二&#xff1a; -v 或者--mount 指定方式三&#xff1a; Dockerfile 匿名卷小结Docker 卷生命周期Docker 卷共享…...

【毕设选题】opencv 图像识别 指纹识别 - python

文章目录 0 前言1 课题背景2 效果展示3 具体实现3.1 图像对比过滤3.2 图像二值化3.3 图像侵蚀细化3.4 图像增强3.5 特征点检测 4 OpenCV5 最后 0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往…...

阿里云无影云电脑使用初体验:真的好用吗?

阿里云无影云电脑即无影云桌面&#xff0c;云桌面如何使用&#xff1f;云桌面购买后没有用户名和密码&#xff0c;先创建用户设置密码&#xff0c;才可以登录连接到云桌面。云桌面想要访问公网还需要开通互联网访问功能。阿里云百科来详细说下阿里云无影云电脑从购买、创建用户…...

无涯教程-JavaScript - FLOOR.MATH函数

描述 FLOOR.MATH函数将数字四舍五入到最接近的整数或最接近的有效倍数。 语法 FLOOR.MATH (number, significance, mode)争论 Argument描述Required/OptionalNumberThe number to be rounded down.RequiredSignificanceThe multiple to which you want to round.OptionalMo…...

Dubbo3基础使用

1、Dubbo概述 现在SpringCloud Alibaba比较火&#xff0c;用的比较多是吧&#xff0c;那dubbo是不是过时的呢&#xff1f; 并不是的&#xff0c;以前有人把Dubbo和SpringCloud进行对比&#xff0c;其实两者是不同维度的&#xff0c;不能对比&#xff0c;dubbo就是一个rpc框架&…...

Android 图片加载框架Glide源码详解

我们看Glide的源码从Glide类入手&#xff0c;使用的时候我们先调用的with方法&#xff0c;源码中with有3个多载的方法&#xff1a;下图翻译过来就是activity用FragmentActivity Applicationcontext用 with&#xff08;Context&#xff09;还有一个with&#xff08;View)的 殊途…...

知识竞赛活动舞台搭建需要多少钱

知识竞赛活动舞台搭建的费用会根据不同的竞赛活动规模和要求而有所不同。对于小型的知识竞赛活动&#xff0c;如学校内部组织的知识竞赛或社区的知识竞赛活动&#xff0c;舞台搭建的费用往往相对较低。在这种情况下&#xff0c;可能只需要一些简单的装饰和道具&#xff0c;例如…...

07set注入级联属性和特殊字符及表达式语言

级联属性赋值(了解) 概述 级联属性赋值就是给某个对象属性的属性赋值,就是给对象关联的对象的属性赋值 Clazz班级类 public class Clazz {private String name;public Clazz() {}public Clazz(String name) {this.name name;}//set和get方法以及toString方法 }Student有cl…...

做网站 人工智能/网络培训机构

一、准备工作 &#xff08;只做一次准备工作&#xff0c;以后都会很方便&#xff09; 1. 安装pip &#xff08;1&#xff09;下载pip到D:\download pip下载地址&#xff1a;https://pypi.python.org/pypi/pip#downloads &#xff08;2&#xff09;下载后解压到当前目录&#xf…...

阿里备案成功后怎么做网站/怎样才能注册自己的网站

最近更新的博客 华为OD机试题 - 字符串加密(JavaScript) 华为OD机试题 - 字母消消乐(JavaScript) 华为OD机试题 - 字母计数(JavaScript) 华为OD机试题 - 整数分解(JavaScript) 华为OD机试题 - 单词反转(JavaScript) 华为OD机试题 最近更新的博客使用说明符合条件的子…...

四川省第十五公司/上海seo网站推广

最初了解 NMock 是从 《程序员》2004.12上的 董洵 所写的 《将单元测试进行到底—Mock Object 浅析》&#xff0c;那真是一片不错的文章&#xff01; 在文章末尾的参考资料中&#xff0c;有一篇 MSDN杂志的文章Mock Objects to the Rescue! Test Your .NET Code with NMock &a…...

武汉城建集团有限公司/百度自然搜索排名优化

点击关注设为星标作为 linux 运维&#xff0c;在工作中多多少少会碰见这样那样的问题或故障&#xff0c;从中总结经验&#xff0c;查找问题&#xff0c;汇总并分析故障的原因&#xff0c;这是一个 Linux 运维工程师良好的习惯。常见的Linux系统故障及排查的方法1、root密码忘记…...

徐州金网网站建设/中国营销传播网官网

自建数据集实现车标识别 使用YOLOv5 YOLOv3算法训练的模型 支持奔驰 宝马 奥迪 别克 丰田等常见车标 效果还是不错的&#xff0c;同时使用pyqt开发的简易可视化界面...

企业网站开发/网络舆情分析报告模板

摘要&#xff1a; 一、背景介绍近年来&#xff0c;越来越热的云计算被推倒风口浪尖&#xff0c;各大中型企业纷纷把企业服务迁移到云上&#xff0c;众多的创业公司也把云服务器作为数据服务的首选。那么问题来了&#xff0c;有些企业的运维开始担心上云的过程是否能做到简单和平…...