Как изменить код для построения графиков в реальном времени на основе графического интерфейса с помощью matplotlib?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как изменить код для построения графиков в реальном времени на основе графического интерфейса с помощью matplotlib?

Сообщение Anonymous »

У меня есть графический интерфейс, использующий PySimpleGUI с несколькими графиками, который получает данные с устройства Bluetooth. Я хотел бы отображать полученные данные в режиме реального времени, в идеале, так же быстро, как получены точки. Сейчас это примерно 1 балл каждые 20 мс. Однако в нынешнем состоянии он работает мучительно медленно. Аппаратное обеспечение уже давно закончило свои измерения, прежде чем графический интерфейс сможет его догнать. Весь графический интерфейс зависает и даже не регистрирует, что устройство выполнило свои задачи.

Код: Выделить всё

class DataPlot:
#stuff

def update(self, plot_func):
self.ax.cla()
self.ax.grid()
plot_func()
self.ax.set_title(self.title)
self.ax.set_xlabel(self.x_label)
self.ax.set_ylabel(self.y_label)
plt.legend(loc="lower right", fontsize="5", ncol=2)
self.figure_agg.draw()

class View:
#stuff

def update_demo_plots(
self, calibration_sweeps: List[SensorSweep], test_sweeps: List[SensorSweep]
):
def demo_well1_update(calibration_sweeps, test_sweeps):
for c_num in range(8):
cal_x = [sweep.applied_voltages[c_num] for sweep in calibration_sweeps]
cal_y = [sweep.calculated_resistances[c_num] for sweep in calibration_sweeps]
self.well1_plot.ax.plot(
cal_x,
cal_y,
"s",
color="blue",
markersize=2,
label="Calibration" if c_num == 0 else None,
)

self.well1_plot.update(
lambda: demo_well1_update(calibration_sweeps, test_sweeps)
)

#other plotting
Каждый раз при получении точки вызывается update_demo_plots(). Это полностью очищает и перерисовывает все данные для каждой точки.
Я определил, что простого вызова self.figure_agg.draw() со всем остальным, закомментированного, достаточно, чтобы значительно замедлить работу графического интерфейса. . Как я могу улучшить и обойти это?

Подробнее здесь: https://stackoverflow.com/questions/790 ... matplotlib
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»