PyQt5的PyQtGraph实践系列1:添加图形到PyQt5布局

栏目: C++ · 发布时间: 5年前

内容简介:在pyqtgraph中,我们可以直接简单快速地绘制一个基本的图形出来。比如下面这样:运行上述代码,我们可以直接得到一个股市收盘价折线图窗口,如下图所示:

文章目录

  • 1、使用PyQtGraph绘制折线图
  • 2、一个基础的PyQt5图形
  • 3、添加pyqtgraph图形到pyqt5小部件

1、使用PyQtGraph绘制折线图

在pyqtgraph中,我们可以直接简单快速地绘制一个基本的图形出来。比如下面这样:

import pyqtgraph as pg
import pandas as pd
import sys
 
# 读取数据
df = pd.read_csv("000001.csv",encoding='gb2312').sort_values("日期")
data = df['收盘价'].tolist()
 
pg.plot(data,title="A股收盘价历史走势|州的先生zmister.com")
if __name__ == '__main__':
    pg.QtGui.QApplication.exec_()
 

运行上述代码,我们可以直接得到一个股市收盘价折线图窗口,如下图所示:

PyQt5的PyQtGraph实践系列1:添加图形到PyQt5布局

这样的图形界面窗口虽然将绘制出了图形来,但是由于是单独的一个窗口,r然而在大多数情况下,我们都是想在PyQt5/PySide2中包含PyQtGraph所生成的图形,但是现在这样的窗口并不方便我们在PyQt5/PiSide2中集成和调用。为了在PyQt5的widget中进行集成,我们需要换一种方式进行调用和绘制。

2、一个基础的PyQt5图形

以下是一个很基础的PyQt5图形界面窗口的代码:

from PyQt5 import QtWidgets
import sys
 
# 主窗口类
class MainWidget(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("上证指数收盘价历史走势|州的先生zmister.com") # 设置窗口标题
        main_widget = QtWidgets.QWidget() # 实例化一个widget部件
        main_layout = QtWidgets.QGridLayout() # 实例化一个网格布局层
        main_widget.setLayout(main_layout) # 设置主widget部件的布局为网格布局
        self.setCentralWidget(main_widget) # 设置窗口默认部件为主widget
 
# 运行函数
def main():
    app = QtWidgets.QApplication(sys.argv)
    gui = MainWidget()
    gui.show()
    sys.exit(app.exec_())
 
 
if __name__ == '__main__':
    main()
 

在上面的代码中,我们创建了一个派生自QMainWindow类的主窗口,在里面设置的窗口标题、创建了一个空的小部件,并为小部件设置了网格布局。运行上述代码,我们会得到如下图所示的空白图形界面窗口:

PyQt5的PyQtGraph实践系列1:添加图形到PyQt5布局

大多数使用PyQt5创建的图形界面,都是有着这样的基础结构,可能布局不一样,可能小部件不一样,但是结构式一样的。下面,我们尝试将pyqtgraph的图形添加到PyQt5的窗口部件中。

3、添加pyqtgraph图形到pyqt5小部件

要将pyqtgraph的图形添加到pyqt5的部件中,我们首先要做的就是将pyqtgraph的绘图方式由window改为widget。在 《pyqtgraph数据可视化2:使用PyQtGraph绘制图形的6种方法》 中,州的先生介绍了pyqtgraph的6中绘图方法,其中的PlotWidget方法就是通过widget方法进行绘图的。

我们修改一下上一节中的代码,将pyqtgraph的绘图代码添加进去,如下图所示:

from PyQt5 import QtWidgets
import pyqtgraph as pg
import pandas as pd
import sys
 
# 读取数据
df = pd.read_csv("000001.csv",encoding='gb2312').sort_values("日期")
data = df['收盘价'].tolist()
 
# 主窗口类
class MainWidget(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("上证指数收盘价历史走势|州的先生zmister.com") # 设置窗口标题
        main_widget = QtWidgets.QWidget() # 实例化一个widget部件
        main_layout = QtWidgets.QGridLayout() # 实例化一个网格布局层
        main_widget.setLayout(main_layout) # 设置主widget部件的布局为网格布局
        pw = pg.PlotWidget() # 实例化一个绘图部件
        pw.plot(data, ) # 在绘图部件中绘制折线图
        main_layout.addWidget(pw) # 添加绘图部件到网格布局层
        self.setCentralWidget(main_widget) # 设置窗口默认部件为主widget
 
# 运行函数
def main():
    app = QtWidgets.QApplication(sys.argv)
    gui = MainWidget()
    gui.show()
    sys.exit(app.exec_())
 
 
if __name__ == '__main__':
    main()
 

在此,实例化了一个PlotWidget()类,然后将上证指数的历史数据通过其plot()进行折线绘制,最后将其添加到网格布局中,这样,我们的pyqtgraph图形就集成到了pyqt的窗口中。如下图所示:

PyQt5的PyQtGraph实践系列1:添加图形到PyQt5布局

4、最后

将pyqtgraph的图形添加到pyqt5窗口只是简单的一小步,之后我们还可以继续对图形进行各种美化和事件处理。后续我们会接着谈到。

本文所使用的数据【上证指数历史数据】后续会经常使用到,其已经上传至百度网盘,链接地址关注州的先生微信公众号(ID:zmister2016),回复关键词 0018 即可获取。


以上所述就是小编给大家介绍的《PyQt5的PyQtGraph实践系列1:添加图形到PyQt5布局》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

数据压缩导论(第4版)

数据压缩导论(第4版)

[美] Khalid Sayood / 贾洪峰 / 人民邮电出版社 / 2014-1 / 129.00

数据压缩已经成为信息革命的一门支撑技术,这场革命已经改变了我们的生活,而在此过程中,数据压缩也变得几乎无处不在。从MP3播放器到智能手机,再到数字电视和数字电影,数据压缩几乎成了所有信息技术的必备要素。 近年来,以大数据为标志的互联网技术高歌猛进。数据规模大、产生速度快、来源多样等特性,导致数据存储和处理都前所未有地复杂。《数据压缩导论(第4版)》作为迄今为止数据压缩领域最全面而深入的著作,......一起来看看 《数据压缩导论(第4版)》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具