打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Python中使用pyqtgraph库实现数据可视化之逐点刷新波形图

背景

pyqtgraphPython平台上一种功能强大的2D/3D绘图库,相对于matplotlib库,由于内部实现方式上,使用了高速计算的numpy信号处理库以及QtGraphicsView框架,因此,它在大数据量的数字处理和快速显示方面有着巨大的优势,它适合于需要快速绘图更新、视频或实时交互性的操作场合。另外,它不仅为各种数据提供了快速可交互式的图形显示,同时也提供了用于快速开发应用程序的各种小工具,如属性树、流程图等小部件,在数学、科学和工程领域都有着广泛的应用。

在使用pyqtgraph库绘制图形的编程方法上,前面一篇文章已经给了一个最简单的例子以及一个连续刷新波形图的例子,下面再给一个逐点刷新波形图的例子。在数据的可视化方面,对于逐点刷新的情况也是比较多的,如在温度采集的时候,可能需要采集到一个点就要实时显示一个点,而前面的点不能丢掉,当显示满一屏时,整个波形向左逐点推进,右侧再填充显示一个新的数据点,给人一种整幅图形是向左逐点移动的显示效果。

下面通过一个例子来演示使用pyqtgraph库实现逐点刷新显示的效果。

例子运行效果

先看一下程序的运行效果,如下图所示:

 

  

例子逐点产生正弦数据并画波形图,满屏数据200点,当超过200个点时,逐点左移推进显示。

实现代码

主要实现代码如下:

 

  

其基本思路是,在定时器中不断产生波形点数据放到动态数组中,达到逐点刷新波形的视觉效果。代码和上篇文章类似,分析如下:

1、13行,创建应用程序实例app

2、15-16行,使用python自带的array库产生动态数组data用以存储double类型的波形数据,N为一屏数据的点数

3、17-19行,创建一个图形显示窗口win,设置窗口属性,如窗口标题、窗口大小等

4、21-24行,在win上添加一个画图对象p,设置各种属性,如网格,XY轴范围、XYlabel及图形标题等

5、26-27行,在p上创建1条黄色曲线curveidx为产生正弦波形数据的变量

6、29-39行,定时器超时函数plotData,内部不断产生一个正弦数据点tmp,当数据点数小于N时,data数组使用append动态添加tmp,否则,将tmp设为data的最后一个元素,前N-1个元素为上次数组中的最后N-1个数。使用setData函数更新curve的数据并刷新绘图

7、41-43行,定义一个定时器timer,并连接超时函数plotData,每隔30ms刷新一次波形

8、45行,使用app.exec_()函数运行实例,进入消息循环

备注

Pyqtgraph库自带了很多例子,可以查看其源码学到更多的东西。输入以下两行代码可以导入例子:

 

  

运行后,弹出如下图所示的例子演示程序:

 

  

左侧列表中显示了自带的各种例子,右侧显示了当前选中例子的源代码程序。如双击Basic Plotting”,则会直接运行该程序,如下图所示:

 

  

 

欢迎加关注,共同交流。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
推荐一款科研必备的Python数据可视化神器——PyQtGraph
09-选择适合你的Python可视化工具(续)
用Python给数据分析穿上嫁衣,炫的不要不要的...
用Python进行数据可视化的10种方法
「独家」Python数据可视化利器Matplotlib,50 干货分享
常见的5个python数据可视化库!
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服