内容简介:在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_()
运行上述代码,我们可以直接得到一个股市收盘价折线图窗口,如下图所示:
这样的图形界面窗口虽然将绘制出了图形来,但是由于是单独的一个窗口,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的图形添加到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的窗口中。如下图所示:
4、最后
将pyqtgraph的图形添加到pyqt5窗口只是简单的一小步,之后我们还可以继续对图形进行各种美化和事件处理。后续我们会接着谈到。
本文所使用的数据【上证指数历史数据】后续会经常使用到,其已经上传至百度网盘,链接地址关注州的先生微信公众号(ID:zmister2016),回复关键词 0018 即可获取。
以上所述就是小编给大家介绍的《PyQt5的PyQtGraph实践系列1:添加图形到PyQt5布局》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- css经典布局系列三——三列布局(圣杯布局、双飞翼布局)
- JavaScript图形实例:迭代函数系统生成图形
- 从图形到像素:前端图形编程技术概览
- 四种方法实现──三栏布局(圣杯布局、双飞翼布局)
- 浅谈CSS三栏布局(包括双飞翼布局和圣杯布局)
- css经典布局——圣杯布局
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。