Как правильно построить несколько графиков в реальном времени в разных окнах с PyQtGraph? - PullRequest
0 голосов
/ 04 ноября 2019

Я новичок в PySide2 и PyQtGraph, и мне бы хотелось, чтобы двое спросили о паре вещей для проекта, над которым я работаю.

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

Идея состоит в том, чтобы иметь меню, которое позволяет вам добавлять графики. Когда вы нажимаете кнопку добавления графика, он позволяет пользователю выбирать, какой из потоков данных (из 10 возможных, которые могут быть получены в потоке) пользователь хочет видеть на графике, как только пользователь выбрал, какие потоки данныххочет построить график, он нажимает «ОК», и открывается окно с желаемым графиком, и начинается построение выбранных потоков. До сих пор у меня здесь нет проблем. Это хорошо работает.

Проблема возникает, когда я пытаюсь добавить второе окно с другим графиком, который может отображать одни и те же потоки или другой набор (всегда ограниченный 10 исходными потоками), чтобы вы могли иметь потоки 1 и 2на первом графике и потоки 2, 4 и 9 на другом. Конечно, одна из трасс на обоих графиках будет одинаковой (2). Когда я добавляю второй график, графический интерфейс начинает становиться вялым, и как только я добавляю третий, он становится очень медленным.

Дело в том, что ПК даже близко не достигает 50% нагрузки, поэтому я почти уверен, что неправильно делаю это с pyqtgraph.

Сейчас я имитируюпоток данных с классом симулятора, который генерирует данные в своем собственном потоке. (около 200 Гц)

Данные передаются «диспетчеру графиков», а этот просто копирует поступающие данные в буфер. Затем внутри этого же класса у меня есть таймер, который берет все данные буфера с частотой 25 Гц и отправляет их на каждую трассировку графического окна для обновления значений на частоте 25 Гц.

Я не знаю, верно ли этоспособ сделать это.

Должен ли я создать другой поток для "менеджера графиков" или QTimer должен быть в порядке?

Чего мне не хватает? Кто-нибудь знает, как это на самом деле должно быть сделано, чтобы работать гладко? Моя идея состоит в том, чтобы, по крайней мере, иметь возможность 5 графиков в 5 разных окнах для построения одного или более из 10 потоков.

Как вы думаете, в этом случае pyqt сможет отображать данные, которые поступают с частотой 1000 Гц для 10потоки? Конечно, он будет обновляться с частотой от 10 Гц до 30 Гц, а не с фактической частотой, с которой поступают данные.

Любое предложение будет высоко оценено.

Спасибо.

...