如何在PyQt5中嵌入Matplotlib生成的图像
off999 2024-10-12 06:09 39 浏览 0 评论
在这篇PyQt5文章中,我将向您展示如何在PyQt5中嵌入Matplotlib生成的图像。
什么是Matplotlib?
Matplotlib是一个Python 2D绘图库,它以各种硬拷贝格式和跨平台的交互环境生成出版质量图形。Matplotlib可以用于Python脚本、Python和IPython shell、Jupyter笔记本、Web应用程序服务器和四个图形用户界面工具包。
Matplotlib试图让事情变得简单,让复杂的事情变得可能。您可以生成绘图,直方图,功率谱,柱状图,错误图,散点图等,只需几行代码。
为了进行简单的绘图,pyplot模块提供了一个类似matlab的接口,特别是在与IPython结合使用时。对于高级用户,您可以通过一个面向对象的界面或一组MATLAB用户熟悉的函数来完全控制线条样式、字体属性、轴属性等。
安装
您可以通过使用pip install matplotlib来简单安装matplotlib。
什么是PyQt5 ?
Qt是一组跨平台的C++库,这些库实现了用于访问现代桌面和移动系统的许多方面的高级api。这些包括位置和定位服务,多媒体,NFC和蓝牙连接,一个基于铬的web浏览器,以及传统的UI开发。
PyQt5是针对Qt v5的一组全面的Python绑定。它被实现为35个以上的扩展模块,使Python可以在包括iOS和Android在内的所有支持平台上作为C++的替代应用开发语言。
PyQt5还可以嵌入到基于C++的应用程序中,以允许这些应用程序的用户配置或增强这些应用程序的功能。
安装
GPL版本的PyQt5可以从PyPI安装:
pip install PyQt5
包括Qt的LGPL版本所需部件的副本。
pip还将从sdist包构建和安装绑定,但Qt的qmake工具必须在PATH上。
sip安装工具还将安装来自sdist包的绑定,但允许您配置安装的许多方面。
现在,这是如何在PyQt5中嵌入Matplotlib生成图像的完整代码。
from PyQt5.QtWidgets import QMainWindow, QApplication, QPushButton
import sys
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
import numpy as np
class Window(QMainWindow):
def __init__(self):
super().__init__()
title = "在PyQt5中嵌入Matplotlib - www.linuxmi.com"
top = 400
left = 400
width = 1000
height = 600
self.setWindowTitle(title)
self.setGeometry(top, left, width, height)
self.MyUI()
def MyUI(self):
canvas = Canvas(self, width=8, height=4)
canvas.move(0,0)
button = QPushButton("点击我", self)
button.move(100, 500)
button2 = QPushButton("再次点击我", self)
button2.move(350, 500)
class Canvas(FigureCanvas):
def __init__(self, parent = None, width = 5, height = 5, dpi = 100):
fig = Figure(figsize=(width, height), dpi=dpi)
self.axes = fig.add_subplot(111)
FigureCanvas.__init__(self, fig)
self.setParent(parent)
self.plot()
def plot(self):
x = np.array([50,30,40,20])
labels = ["LinuxMi.com", "Debian", "Linux", "Python"]
ax = self.figure.add_subplot(111)
ax.pie(x, labels=labels)
app = QApplication(sys.argv)
window = Window()
window.show()
app.exec()
我们导入了所需的库,基本上是我们需要的
from PyQt5.QtWidgets import QMainWindow, QApplication, QPushButton
import sys
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
import numpy as np
这是我们的主窗口类它继承自QMainWindow,我们对窗口有一些要求,比如窗口的标题,宽度,高度,我们还在这个类中调用了MyUI()方法。
class Window(QMainWindow):
def __init__(self):
super().__init__()
title = "在PyQt5中嵌入Matplotlib - www.linuxmi.com"
top = 400
left = 400
width = 1000
height = 600
self.setWindowTitle(title)
self.setGeometry(top, left, width, height)
self.MyUI()
在这个方法中,我们创建了一个带有两个QPushButton的Canvas。
def MyUI(self):
canvas = Canvas(self, width=8, height=4)
canvas.move(0,0)
button = QPushButton("点击我", self)
button.move(100, 500)
button2 = QPushButton("再次点击我", self)
button2.move(350, 500)
和这是我们的Canvas类,继承自FigureCanvas。
class Canvas(FigureCanvas):
def __init__(self, parent = None, width = 5, height = 5, dpi = 100):
fig = Figure(figsize=(width, height), dpi=dpi)
self.axes = fig.add_subplot(111)
FigureCanvas.__init__(self, fig)
self.setParent(parent)
self.plot()
在这里,我们还将在PyQt5窗口中绘制一个饼状图。
def plot(self):
x = np.array([50,30,40,20])
labels = ["LinuxMi.com", "Debian", "Linux", "Python"]
ax = self.figure.add_subplot(111)
ax.pie(x, labels=labels)
因此在这里,每个PyQt5应用程序都必须创建一个应用程序对象。sys.argv参数是命令行的参数列表。
app = QApplication(sys.argv)
最后,我们进入应用程序的主循环。事件处理从这里开始。
mainloop从窗口系统接收事件并将它们分派给应用程序小部件。
app.exec()
sys.exit()
运行完整的代码,结果如下:
相关推荐
- 手机金山毒霸下载(下载一个金山毒霸)
-
1,金山毒霸的默认安装目录文件为“kingsoftantivirus”,所以安装时没有更改过安装路径的话,金山毒霸在电脑上的文件夹名称是“kingsoftantivirus”。2,金山毒霸默认安装...
- 腾讯游戏app下载(腾讯游戏app)
-
为什么电脑版的腾讯会议下载完以后就被阻止了?如果你遇到这种情况,可能是因为你的电脑上面下载的腾讯会议不是。正规渠道下载的,或者不是正版的腾讯会议,所以你下载的腾讯会议。有可能中了病毒,你可以用你的电脑...
- 亚马逊电子书免费下载网站(亚马逊电子书免费资源)
-
在亚马逊电子书停运后,你可以尝试以下方法下载小说: 1.使用其他电子书平台:有很多其他的电子书平台,如KindleUnlimited、AppleBooks、GooglePlayBo...
- 什么小说软件最全还免费(笔趣阁app下载)
-
最近新出了一个小说阅读器,好像叫新免小说阅读器,我自己也去下载了来看了一下,却是还挺不错的,总结了一下几个有点:1、完全免费,确实是免费的,没有充值的接口,问过客服也说是一款免费的软件,不像很多小说,...
- 游戏中心app(网易游戏中心app)
-
OPPO游戏中心下载游戏的方法:你可以点击顶部搜索栏输入游戏名称直接下载,也能在游戏中心的「精选」页面查看每日推荐游戏。点击「分类」筛选心仪的游戏,「排行」页面浏览热门内容。碰到喜欢的游戏,点击「安装...
-
- 迅雷播放器(迅雷播放器不支持此类视频文件怎么办)
-
特点不同、优势不同,一个是app一个是插件一、指代不同1、迅雷看看播放器:是迅雷公司出品的一款在线播放插件,采用P2P点对点传输技术,可以在线流畅观看高清晰电影。2、迅雷影音:是一款迅雷公司制作的视频播放软件,可播放各类高清视频。二、特点不...
-
2026-01-24 04:51 off999
- 浏览器在线使用(在浏览器上)
-
浏览器用法:1、打开我的电脑,在我的电脑中找到【C盘】进入到C盘文件夹中;2、在C盘文件夹中,找到【ProgramFiles(X86)】这个文件夹,进入到其中; 1、点击开始菜单,接着找...
- 斗地主网页版(欢乐斗地主网页版)
-
1.是两个版本在运行2.这是因为电脑欢乐斗地主可以有不同的版本,每个版本可能有不同的功能或者设计,所以可以同时存在多个版本在运行。3.这种情况下,可能是为了满足不同用户的需求或者提供不同的游戏体...
- 比早游戏更好的平台(早游戏相似的游戏盒)
-
你好,这边推荐你用及时用车,及时用车这款app目前挂靠在高的旗下平台。双方正在推出免佣活动。早高峰7点~9点这个时间段及时用车,这边是免收佣金的,乘客付多少,司机得多少,可以轻松跑出高额流水。其次,中...
- qq下载中心(qq下载.cn)
-
可以通过解除保护模式页面,查看QQ帐号进入保护模式的原因,及获取恢复QQ帐号正常使用的方法。1.可以在realme手机中出场自带的软件商店中搜索游戏中心下载安装即可。2.可在设置-应用-系统可卸载应...
-
- qq轻聊版旧版本可登录(qq轻聊版旧版本下载2018)
-
楼主您好!①先登录正式版,在设置里面关闭设备安全锁,退出账号②下载轻聊版进行登录,重新开启安全锁主要是QQ轻聊版比较适合想我这样的学生党,这样能够安心学习还能接收消息,内存也比较少电脑版的有的可以,有的就不行手机版的大部分是不可以的,会提...
-
2026-01-24 03:15 off999
- 诺基亚老款手机(诺基亚5g手机新款上市)
-
1999年上市3210(GSM)6150(GSM)8810(GSM)1998年上市1610(GSM)2110(GSM)232(其他)3810(GSM)5110(GSM)6110(GSM)8110+(G...
- 模拟经营开店的游戏(模拟经营开店的游戏大全)
-
奇趣多多的餐厅经营玩法让每一个玩家都能够在游戏之中通过经营来赚取财富,每一天都会有新的惊喜等待着大家,而且每一种玩法都会给玩家带来福利,让你能够通过不断的挑战来赚取到高额的红包奖励,而且游戏之中设计有...
- 精准客户电话号码资源(精准客户电话号码渠道)
-
微信不同加人方式有不同的限制:1、附近人功能。加人上限15人/天,频率3次/天,间隔时间1-2小时。2、摇一摇功能。加人上限15人/天,频率3次/天,间隔时间1-2小时。3、通讯录搜索功能。加人上限6...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
python入门到脱坑 输入与输出—str()函数
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
linux软件(linux软件图标)
-
win7系统还原步骤图解(win7还原电脑系统的步骤)
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
失业程序员复习python笔记——条件与循环
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
