У меня есть класс python, который генерирует массив numpy
размером 10000 и выполняет над ним некоторые вычисления. Класс имеет два метода построения графиков, и оба используют pyqtgraph
- Отображение всех данных
- Построение сегментов данных по одному (200 выборок)
Мне было интересно, как я могу l oop просматривать сегменты данных (200 выборок за раз) и показывать обработанные данные пользователю и ждать, пока пользователь не нажмет любую клавишу, прежде чем строить следующие 200 выборок?
Я хотел бы иметь возможность обновлять график, не закрывая окно Qt, чтобы добиться более эффективной производительности, просто обновляя содержимое уже построенного объекта.
import numpy as np
from pyqtgraph.Qt import QtCore, QtGui
import pyqtgraph as pg
class testqt:
def __init__(self):
self.data = np.random.randn(10000) # for the sake of providing a MWE
self.do_some_processing()
def do_some_processing(self):
self.data_processed = 2*self.data
def plot_entire_processed_data(self):
# Plot the entire processed data
win = pg.GraphicsLayoutWidget(show=True)
p = win.addPlot()
curve_data = p.plot(self.data_processed)
QtGui.QApplication.instance().exec_()
def plot_processed_data_every_200(self):
# animate the processed data in segments of 200 samples
win = pg.GraphicsLayoutWidget(show=True)
p = win.addPlot()
curve_data = p.plot(self.data_processed[:200])
for i in range(200, len(self.data_processed), 200):
curve_data.setData(self.data_processed[i:i+200])
# How can I pause here and use keyboard to move to the next 200 samples?
# I would like to be able to visually evaluate each segment first and then
# press any key to see the next segment
QtGui.QApplication.instance().exec_() # unfortunately, this only plot the last 200 samples
a = testqt()
a.plot_entire_processed_data()
a.plot_processed_data_every_200()
Я был бы признателен за любую помощь или подсказка.