我有一个数据流,每秒可提供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至今。任何帮助将不胜感激。

最佳答案

PyQtGraph是一个不错的选择,实时绘制125个样本/秒应该没有问题。您可以使用多种方法来绘制实时数据,滚动数据,并且PyQtGraph中实际上有一个很好的示例文件,该文件仅显示以下内容:https://github.com/pyqtgraph/pyqtgraph/blob/develop/examples/scrollingPlots.py

您可以通过在安装PyQtGraph之后在Python解释器中运行以下示例来运行示例:

import pyqtgraph.examples
pyqtgraph.examples.run()


并选择“滚动图”示例。

关于python - 用Python实时绘图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29213291/

10-12 02:53