pyqtgraph是Python平台上一种功能强大的2D/3D绘图库,相对于matplotlib库,由于其在内部实现方式上,使用了高速计算的numpy信号处理库以及Qt的GraphicsView框架,因此它在大数据量的处理及快速显示方面有着天然的优势,非常适合于需要快速绘图更新、视频或实时交互性的操作场合,在数学、科学和工程领域都有着广泛的应用。
对于多条曲线的快速绘制方式,有两种方案可供选择,一种是将多条曲线合并显示在一幅绘图区域上,另一种方案是将多条曲线显示在不同的绘图区域上,对于这两种绘制方案,下面通过例子来演示在Python语言中使用pyqtgraph库编程实现的方法。
方案1:将多条曲线合并显示在一幅绘图区域
程序的运行效果如下图所示:
例子在图形的一幅绘图区域上显示了3条曲线,分别为正弦曲线、余弦曲线及sinc函数曲线。
主要实现代码如下:
代码主要部分说明如下:
1、第13行,创建应用程序实例app
2、第15-17行,创建一个图形显示窗口win,设置窗口属性,如窗口标题、窗口大小等
3、第19-22行,使用numpy库产生3条曲线即正弦曲线、余弦曲线及sinc函数曲线的x、y数据
4、第24行,在win上添加一个绘图区域对象p,参数中设置了X、Y轴label及图形标题等
5、第25-27行,在p上分别添加3条不同颜色的曲线
6、第28-29行,设置绘图区域的网格及坐标轴范围属性
7、第31行,使用a()函数运行实例,进入消息循环
方案2:将多条曲线显示在不同的绘图区域
程序的运行效果如下图所示:
对于上面的正弦曲线、余弦曲线及sinc函数曲线分别显示在了图形的3个绘图区域上。
主要实现代码如下:
代码主要部分说明如下:
1、第13-22行,和上例完全相同
2、第24-27行,在win上分别添加了3个绘图区域对象p1、p2、p3,其中,第26行,说明在绘图区域的下一行创建p3,第27行的参数“colspan=2”说明p3占的列宽为2列
3、第29-32行,在for循环中分别在3个绘图区域对象上绘制不同的曲线,并设置绘图区域的网格及坐标轴范围等属性
4、第34行,使用a()函数运行实例,进入消息循环
备注
在第2种方案中创建绘图区域对象p时,也可以在参数中直接指定p处于的位置及行宽、列宽等信息,如将上面例子中第26、27行合并写为如下代码也是等价的。
欢迎加关注,共同交流。