为什么使用PyQtGraph库
我们知道,在Python中,已经有了很多可供选择的数据可视化库。
比如最经典、使用人数最多的matplotlib库,其有着十多年的历史积累,可生成高质量出版级别的图形,它几乎已经成了事实上的Python绘图标准库。再比如在matplotlib库基础上衍生的其它绘图库,如seaborn、ggplot、plotnine等等,甚至还有其它的一些库如底层使用JavaScript 实现的开源可视化库pyecharts等,这些库都比较容易使用,几行代码就可画出来漂亮的图形。
但是这些绘图库也存在着不足,即在图形绘制速度上有所欠缺,特别是对于科研算法方面的数据可视化,很多情况需要实时绘图,要求能够提供尽可能快的绘制刷新速度,那这些库显的有些力不从心了。
而我们下面要介绍的绘图库PyQtGraph库,则在绘图速度方面表现突出,在不失绘图美观、功能强大的前提下,绘图速度方面作了极大的优化,特别适合于实时数据采集的动态图形绘制场合。
什么是PyQtGraph库
先上个2D绘制效果图:
再来个3D绘制效果图:
PyQtGraph是一个纯python的图形和GUI库,构建于PyQt4/PySide和numpy之上,它主要用于数学/科学/工程应用方面。虽然该库完全用python编写,但其内部使用了Qt的GraphicsView框架及numpy计算库,因此其在图形绘制及数据处理速度方面有着极其优异的表现。同时,PyQtGraph是在MIT开源许可下发布的。
该库可运行于Python2和Python3上,其两个主要特色为:
- 为数据(绘图,视频等)提供了快速可交互式的图形(2D和3D)显示。
- 提供了帮助快速开发应用程序的小工具/部件,如属性树、颜色选择框按钮等。
其官网地址是http://www.pyqtgraph.org/,大家有兴趣可以看下。
PyQtGraph库的主要特点
这儿仅列举部分功能,详细的可直接查看官方文档。
1、可交互式的2D/3D绘图功能
- 折线图、散点图、三维曲面
- 基于等值面生成的网格绘制
- 丰富的属性设置
- 支持显示大多数数据类型(int或float;任意位深度;RGB、RGBA或亮度)
- 在任意角度对多维图像进行切片的功能(非常适合MRI数据)
- 交互式鼠标平移/旋转/缩放
- 实时数据显示与交互的快速绘图
2、数据选择/标记和关注区域控制
- 在绘图中可交互标记垂直/水平位置和区域
- 在图像中可选择任意区域并自动切片数据以匹配的小部件
3、科学/工程应用程序有用的小部件和模块库
- 参数树、颜色渐变编辑器及带SI单位显示和对数步进的SpinBox小部件等
- 类似于Qt的Dock系统,但更加灵活和可编程,允许用户重新排列图形用户界面组件
怎么样,这里面有没有你感兴趣的呢?心动了么?
PyQtGraph库的安装
以Windows系统为例,对于Python2或Python3,以下两种方法都可以安装:
- pip命令行安装:pip install pyqtgraph
- 官网下载exe程序安装:32位和64位的分别为pyqtgraph-0.10.0.win32.exe,pyqtgraph-0.10.0.win-amd64.exe文件
PyQtGraph库的使用
PyQtGraph库提供了如下几种使用方式:
- 在交互式shell如ipython里显示数据
- 在应用程序中直接弹出弹出窗口显示数据
- 以小部件窗口的方式嵌入到在PyQt应用程序中显示数据
下面是一个超简单直接弹出窗口的例子,代码如下:
运行结果如下图所示:
是不是比较简单啊。
另外,这个库比较好的地方是自带了很多很多的例子,如果你想看更多更复杂的效果,就从它的例子开始学习吧,打开例子的方法只需要下面两行代码:
import pyqtgraph.examples
pyqtgraph.examples.run()
例子界面如下图所示,每一个都可以单独运行:
GraphicsView框架及numpy计算库的有机结合,造就了PyQtGraph库的高速绘制性能,小伙伴们,快试下吧。