Лучший способ обновить pyqtgraph?

Я разрабатываю приложение для сбора и отображения экспериментальных данных и управления несколькими устройствами. Я строю график с помощью таймера, который извлекает данные из нескольких массивов, которые постоянно заполняются другим QTimer, отвечающим за сбор данных.

После нескольких часов сбора и построения графика со скоростью, меньшей или равной 1 точке в секунду, построение графика становится довольно медленным, и я не думаю, что это связано с нехваткой памяти (8 байт x 12 часов x 3600 измерений/ час x 5 сигналов ~ 1,6 МБ и у меня не менее 2 ГБ ОЗУ), поэтому я думаю, что может быть задержка при повторной прорисовке и очистке сигналов, которая также происходит каждую секунду.

В настоящее время я использую:

PlotItem.plot(x, y, clear=True) 

обновить мой сюжет. Есть лучший способ это сделать? Некоторая функция, которая добавляла бы точки данных к графику, не переделывая все это. Сказав, что я собираюсь пойти дальше и попробовать:

PlotItem.plot(x[-2:-1], y[-2:-1], clear=False) 

Но это может быть немного сложно, так как мне придется различать свежие и старые данные. У кого-нибудь есть более элегантное решение?


person Alexis R Devitre    schedule 13.12.2020    source источник


Ответы (1)


По моему опыту, график становится заметно медленнее примерно на 100000 точек, поэтому с 5 графиками по 12 * 3600 точек вы достигаете этой точки.

Вы не можете постепенно добавлять точки данных на график, потому что тогда линии будут прерывистыми; вам придется каждый раз перерисовывать каждую точку данных. Однако это можно сделать немного эффективнее, используя метод setData, как объясняется в моем ответе здесь.

Также очень поможет отключение автодиапазона осей.

Наконец, я заметил, что рисование становится очень медленным, если вы используете сглаживание вместе с шириной линии больше 1,0.

person titusjan    schedule 15.12.2020
comment
Спасибо за советы, они были весьма полезны. Я приму ответ. - person Alexis R Devitre; 16.12.2020