Графика в реальном времени в Python

У меня есть поток данных, дающий мне 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 в любом из примеров, которые я нашел в Интернете. уже. Любая помощь будет принята с благодарностью.


person Philo    schedule 23.03.2015    source источник
comment
Это очень широкий вопрос. Тем не менее, я думаю, что использование matplotlib будет слишком медленным для 125 обновлений в секунду.   -  person Ffisegydd    schedule 23.03.2015


Ответы (1)


PyQtGraph — довольно хороший выбор, и не должно быть проблем с отображением 125 выборок в секунду в реальном времени. Существует несколько подходов, которые вы можете использовать для построения графиков с прокруткой данных в реальном времени, и на самом деле в PyQtGraph есть хороший пример файла, показывающий именно это: https://github.com/pyqtgraph/pyqtgraph/blob/develop/examples/scrollingPlots.py

Вы можете запустить пример, запустив его в интерпретаторе Python после установки PyQtGraph:

import pyqtgraph.examples
pyqtgraph.examples.run()

и выбрав пример «Прокрутка графиков».

person Andrzej Pronobis    schedule 28.05.2015