Я пытаюсь построить данные в реальном времени, используя matplotlib. До сих пор мне удавалось только показывать статичное окно фигуры и расстраивать себя. Я перепробовал много мелких изменений, основанных на другом ответе, но ни один из них не помог. Мой код выглядит следующим образом. Любая помощь приветствуется.
import matplotlib.pyplot as plt
import numpy as np
class Plotter():
def __init__(self):
self.error = []
self.fig, self.ax = plt.subplots()
self.line, = self.ax.plot(range(len(self.error)), self.error)
def start_plot(self):
plt.ion()
def end_plot(self):
self.error = []
def update(self, worker):
self.error.append(worker.GetMetricValue())
self.line.set_ydata(self.error)
return self.line
def update_plot(self, worker):
self.error.append(worker.Get_metric_value())
self.ax.set_ylim(np.min(self.error)*1.1, (np.max(self.error)+0.1)*1.1)
self.line.set_ydata(self.error)
self.line.set_xdata(range(len(self.error)))
self.fig.canvas.draw()
plt.pause(0.1)
#self.fig.canvas.flush_events()
def get_error(self):
return self.error
class WorkerClass():
def __init__(self):
pass
def Get_metric_value(self):
return np.random.rand()
def main():
worker = WorkerClass()
pltr = Plotter()
pltr.start_plot()
for i in range(10):
print("iteration {}".format(i))
pltr.update_plot(worker)
if __name__ == '__main__':
main()