Сам график инициализируется в потоке так:
import matplotlib
matplotlib.use('GTKAgg')
import matplotlib.pyplot as plt
from matplotlib.backends.backend_gtkagg import FigureCanvasGTKAgg as FigureCanvas
#...
self.fig = plt.figure()
self.ax = self.fig.add_subplot(111)
self.ax.grid()
self.x = [i for i in range(50)]
self.y = [300 for i in range(50)]
self.line, = self.ax.plot(self.x, self.y, lw=2)
self.canvas = FigureCanvas(self.fig)
self.processcls.vbox5.pack_start(self.canvas)
self.canvas.show()
#...
def animate(self):
self.y.pop(0)
self.y.append(round(random.uniform(290, 310), 1))
self.line.set_ydata(self.y)
self.canvas = FigureCanvas(self.fig)
self.canvas.draw()
Ещё методом научного тыка в функцию animate я добавил строчку self.canvas = FigureCanvas(self.fig) - без неё через 5-10 секунд программа просто подвисает, никаких сообщений на консоль не выдается. Что с этим можно сделать? Нужно чтобы график обновлялся нормально. Я пробовал другие способы обновления/анимации, через blit и draw_artist, через ion тоже пробовал, но они вообще не заработали в моей программе.
Может есть какие-нибудь альтернативные способы построения и обновления простейших графиков? Куда копать?