实时标绘在Python(Realtime plotting in Python)

2019-10-22 08:04发布

我给我每秒125个浮标数据流,我想现场绘制出来。 目前我的代码看起来是这样的:

Code to read data from stream
counter = 0
while True:
    counter = counter+1
    data from stream (x values)

在现实中,代码看起来有点复杂,当然,不过这会让给出建议更容易,我想。

我在想刚才保存图形为一个文件:

counter=0
a_data=np.zeros(100,float)                   #this is limited to 100 floats
while True:
    counter = counter+1
    bytestring = sock.recv(51)               # this is the stream data
    raw = struct.unpack(pp,bytestring)       # this is the unpacked data
    twentyfive = (raw[25]-15310)*0.0265      # this is the x value
    a_data[counter] = twentyfive
    plt.plot(a_data)
    print(twentyfive)
    plt.savefig('test.png')
    time.sleep(0.01)

问题是,数据波动了很多,所以它的方式过于混乱是有帮助的。 该图应该向右移动。 此外,它绝不是速度不够快。 出于这个原因,我想使用pyqtgraph,但我不知道如何(由计数器给出的时间步长)来养活我的x值(125个毫伏值每秒)和y的值在任何的我在网上找到的例子来pyqtgraph至今。 任何帮助将不胜感激。

Answer 1:

PyQtGraph是一个相当不错的选择,在这里,它应该是对地块没有问题的125次/秒的实时性。 还有,你可以使用绘图实时,滚动数据的几种方法,实际上存在PyQtGraph一个很好的例子文件显示这一点: https://github.com/pyqtgraph/pyqtgraph/blob/develop/examples/scrollingPlots.py

您可以在安装后PyQtGraph你的Python解释器运行这个运行示例:

import pyqtgraph.examples
pyqtgraph.examples.run()

并选择“滚动曲线”的例子。



文章来源: Realtime plotting in Python