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

本篇概要

festive customs

  • pyqtgraph绘图库
  • 在GUI中集成一个pyqtgraph

pyqtgraph绘图库

festive customs

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

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

  • OpenGL:一个功能强大的二维三维专业图形绘制工具;
  • Matplotlib:Python中很经典的图形绘制模块;
  • PyQtGraph:基于Qt平台,提供交互的数据显示图形绘制。

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

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

  • 拥有丰富的图形种类;
  • 能够快速地实时更新绘图数据;
  • 能够进行交互式的操作;
  • 多种标记功能;
  • ……

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

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

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

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

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

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

在GUI中集成pyqtgraph图形

festive customs

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

  • pyqtgraph.plot():创建一个新的绘图窗口来显示数据;
  • PlotWidget.plot():将一组新的数据添加到现有的绘图小部件;
  • PlotItem.plot():将一组新的数据添加到现有的绘图小部件;
  • GraphicsLayout.addPlot():添加一个新的图形到一个图形层中;

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

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

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

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

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

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

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

最后我们运行代码:

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

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

下一篇,我们将介绍在GUI中使用网络和数据库。

PS:点击“阅读原文”查看完整代码示例。

原文发布于微信公众号 - 州的先生(zmister2016)

原文发表时间:2017-11-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

3 条评论
登录 后参与评论

相关文章

来自专栏安恒网络空间安全讲武堂

WriteUp分享 | LCTF的一道SSRF

0x00题目 题目中http://211.159.161.162/test.php 访问是这个页面 ? 点击后是这个页面 ? 0x01解题 对比发现后端逻辑应...

20210
来自专栏Material Design组件

Human Interface Guidelines —— Tab Bars

34715
来自专栏数据小魔方

如何在Excel里加载第三方插件,让你的Excel功能更加强大!!!

今天是小魔方的第三篇推送教程,要谈的话题是如何在Excel里加载第三方插件工具! 记得第一期的时候讲的如何调用开发工具,其实微软公司在开发office办公套件的...

3015
来自专栏Micro_awake web

HTML5语义化元素

语义化元素:有意义的元素。 对语义化的理解: 正确的标签做正确的事情; HTML5语义化元素让页面内容结构化清晰; 便于开发人员阅读,理解,维护; 搜索引擎爬虫...

1695
来自专栏沈唁志

【收藏】Python 爬虫的工具列表大全

1794
来自专栏王亚昌的专栏

编译错误:multiple types in one declaration

/data/..../hnconv.h:6: error: multiple types in one declaration /data..../hnconv...

673
来自专栏玉树芝兰

如何用Python智能批量压缩图片?

本文一步步为你介绍,如何用Python自动判断多张图片中哪些超出阈值需要压缩,且保持宽高比。如果你想了解Python图像处理的基础知识,欢迎动手来尝试。

772
来自专栏UML

用例图教程(示例指南)

用例是系统分析中用于识别,澄清和组织系统需求的方法。用例由特定环境中系统和用户之间的一组可能的交互序列组成,并且与特定目标相关。它由一组元素(例如,类和接口)组...

1123
来自专栏HBStream流媒体与音视频技术

基于Live555实现RtspServer及高清高码率视频传输优化

其实之前我就已经开发过一个RTSP Server程序,并且写了一篇文章进行了介绍“一个RtspServer的设计与实现和RTSP2.0简介”,不过当时开发的目的...

916
来自专栏刘望舒

Android绘制优化(一)绘制性能分析

前言 一个优秀的应用不仅仅是要有吸引人的功能和交互,同时在性能上也有很高的要求。运行Android系统的手机,虽然配置在不断的提升,但仍旧无法和PC相比,无法做...

1835

扫码关注云+社区