Как ускорить анимацию?

Я пытаюсь создать анимацию Matplotlib данных моей лапы, где вы можете увидеть распределение давления на всей пластине давления со временем (256×64 сенсоров на 250 кадров).

Я нашел рабочий пример на собственном сайте Matplotlib и сумел заставить его работать над моими собственными данными. Однако «анимация» ужасно медленная, и я понятия не имею, как ее ускорить.

Вот пример gif Joe Kington, сделанный в другом ответе , который касается скорости, с которой он отображается. Учитывая, что измерения выполняются на частоте 125 Гц, это делает измерения очень ужасными. Если он работает со скоростью 30-60 кадров в секунду, он может быть запущен за 4 или 8 секунд, а не 20+.

введите описание изображения здесьвведите описание изображения здесь

Я не против использовать какой-либо инструмент, который мне нужен для выполнения этой работы, пока есть хорошая документация, чтобы выяснить, как это сделать.

Поэтому мой вопрос: как я могу ускорить эти анимации?

Я внедрил предложение Ignacio поместить в t.Start (1), однако он работает только «прилично», когда фигура такая большая:

введите описание изображения здесь

class PlotFigure(Frame): """ This class draws a window and updates it with data from DataCollect """ def __init__(self): Frame.__init__(self, None, -1, "Test embedded wxFigure") #Varying the size of Figure has a big influence on the speed self.fig = Figure((3,3), 75) self.canvas = FigureCanvasWxAgg(self, -1, self.fig) EVT_TIMER(self, TIMER_ID, self.onTimer) def init_plot_data(self): self.datagen = DataCollect(array3d) self.axes = self.fig.add_subplot(111) self.axes.imshow(self.datagen.next().T) def onTimer(self, evt): self.data = self.datagen.next() self.axes.imshow(self.datagen.next().T) self.canvas.draw() 

Когда я изменяю размер окна во время анимации, он немедленно замедляется до обхода. Это заставляет меня подозревать, что задержка не является единственной причиной замедления. Итак, любые другие предложения? Если вам интересно, вот ссылка на один из файлов ASCII.

3 Solutions collect form web for “Как ускорить анимацию?”

Я нашел ответ Джо Кингтона, который упомянул, вместо этого, вместо « Глупый» . Сначала я не мог заставить его работать с моими собственными данными, но с некоторой помощью в чате нам удалось выяснить, как адаптировать один из примеров Matplotlib, который поставляется с Glumpy для работы с моими данными.

 import numpy, glumpy from glumpy.pylab import * window = glumpy.Window(256,64) Z = data.astype(numpy.float32) t0, frames, t = 0,0,0 fig = plt.figure(figsize=(7,7)) ax = plt.subplot(111) ax = imshow(Z[:,:,0], origin='lower', interpolation='bilinear') show() window = glumpy.active_window() @window.event def on_idle(dt): global Z, t0, frames, t t += dt frames = frames + 1 if frames > 248: fps = float(frames)/(t-t0) print 'FPS: %.2f (%d frames in %.2f seconds)' % (fps, frames, t-t0) frames,t0 = 0, t for image, axis, alpha in items: image.data[...] = Z[:,:,frames] image.update() window.draw() window.mainloop() 

Конечный результат можно увидеть здесь, неважно, насколько большой я делаю окно, он будет работать с очень устойчивыми 58 + fps. Поэтому я должен сказать, что я очень доволен конечным результатом!

введите описание изображения здесь

Значение, переданное в wx.Timer.Start() является скоростью запуска в миллисекундах. Передайте меньшее значение.

Использовать профилировщик, чтобы найти основную причину, проскальзывание кадра может быть полезно также в крайнем случае.

Или переключитесь на альтернативное решение, такое как двойное буферирование с использованием контекстов устройства или PyOpenGL …

  • Выход matplotlib после анимации
  • Невозможно сохранить анимацию matplotlib с помощью ffmpeg
  • python matplotlib: невозможно вызвать функцию FuncAnimation изнутри функции
  • Как оживить упорядоченную по времени последовательность графиков matplotlib
  • Получение blitting для работы в funcAnimation, встроенный в PyQT4 GUI
  • Как сделать повторяющуюся вращающуюся анимацию в Киви?
  • Анимация от matplotlib не работает в spyder
  • Анимация pcolormesh () с mpl_toolkit.basemap с указанием ошибки атрибута
  • 2D-анимация в Python
  • Построение анимированных колчанов в Python
  • Анимация Matplotlib с поддержкой Qt в jupyter
  • Python - лучший язык программирования в мире.