在GUI窗口中绘制一个茅台股票K线图

浏览: 2879

本篇概要

  • pyqtgraph绘图库

  • 在GUI中集成一个pyqtgraph

pyqtgraph绘图库

在GUI中集成图形工具是很多桌面程序常有的功能,最为普遍的,就是各种投资交易工具中的价格走势图。比如股票的指数走势,股票的K线图等。

在PyQt的应用程序中集成图绘功能,有很多种方案,比如:

  • OpenGL:一个功能强大的二维三维专业图形绘制工具;

  • Matplotlib:Python中很经典的图形绘制模块;

  • PyQtGraph:基于Qt平台,提供交互的数据显示图形绘制。

各种图形绘制方案都有自己的优点,但是论与PyQt程序的融合度,还是当属PyQtGraph。

PyQtGraph用于图形绘制有很多的优势:

  • 拥有丰富的图形种类;

  • 能够快速地实时更新绘图数据;

  • 能够进行交互式的操作;

  • 多种标记功能;

  • ……

PyQtGraph的安装很简单,使用pip就可以直接安装:

image.png

安装之后直接在Python代码中使用import 引入就可以使用了。

image.png

PyQtGraph自带一个丰富的示例模块,我们在代码中输入:

image.png

就会自动打开示例手册的GUI程序:

image.png

我们可以选择一个示例进行运行:

image.png

前面我们说了PyQtGraph与PyQt的结合度很高,下面我们来看看在PyQt中如何调用PyQtGraph绘制的图形

在GUI中集成pyqtgraph图形

在PyQtGraph中,有几种绘制图形的方法:

  • pyqtgraph.plot():创建一个新的绘图窗口来显示数据;

  • PlotWidget.plot():将一组新的数据添加到现有的绘图小部件;

  • PlotItem.plot():将一组新的数据添加到现有的绘图小部件;

  • GraphicsLayout.addPlot():添加一个新的图形到一个图形层中;

根据PyQtGraph这几种绘图方式,我们在PyQt中可以在窗口部件中显示图形,也可以在一个新的窗口的显示图形。

下面我们在窗口部件中显示茅台股票近半年来的K线图,作为在PyQt中集成显示PyQtGraph图形的例子。

首先,在我们之前创建的GUI的基础上,新增一个选项卡,在其中放置一个VerticalLayout层布局:

image.png

然后,按照惯例,将UI文件转换为Python文件,并新建一个Python文件引入。

image.png

根据PyQtGraph的示例,我们新建一个绘制K线图的类CandlestickItem:

image.png

然后,我们创建一个函数chart(),用于通过tushare模块获取股票的历史数据,并将数据传入之前定义好的用于生成K线图的类:

image.png

接着,在GUI程序的主类MainWindow()的_init_(self)中进行调用:

image.png

最后我们运行代码:

0 (5).gif

这样,PyQtGraph的图形作为一个窗口部件集成到了选项卡中。

PyQtGraph的用法和功能还有很多,大家可以在自带的示例库,官方文档(http://www.pyqtgraph.org/documentation/index.html),github中(https://github.com/pyqtgraph/pyqtgraph)获取到最新最全的使用方法和技巧。

推荐 0
本文由 州的先生 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

1 个评论

不晓得用PyQtGraph做大数据行情显示会不会卡顿?现在我手头的一个案例:两个月的行情数据,加载到matplotlib中,显示出来的图像非常卡顿。不晓得PyQtGraph的性能如何?

要回复文章请先登录注册