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

Я пытаюсь создать анимацию 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
  • ArtistAnimation vs FuncAnimation matplotlib анимация matplotlib.animation
  • Невозможно сохранить анимацию matplotlib с помощью ffmpeg
  • Анимация Matplotlib либо замерзает после нескольких кадров, либо просто не работает
  • Почему моя простая программа python gtk + cairo работает так медленно / заикается?
  • Как оживить упорядоченную по времени последовательность графиков matplotlib
  • Создание анимации с использованием Python Gizeh
  • простая анимация с использованием tkinter
  •  
    Interesting Posts for Van-Lav

    Bash или vim alias / command использовать определенный шаблон при создании файлов Python?

    получение полей даты от oracle в правильном формате с использованием Python и cx-oracle

    Как выполнить синтаксический анализ данных extensionAltName с помощью pyasn1?

    произвольное количество аргументов в функции python

    Поддерживаемые API-интерфейсы Django между запросами

    Использование памяти назначения питона Python

    Таблица парных значений частоты в Python

    Настройка пути к App Engine для PyDev на Mac

    Изменение аргументов конструктора namedtuple с помощью подкласса?

    Выделение трассировки стека python

    принуждение к Unicode: нужна строка или буфер, NoneType найден при рендеринге в django admin

    Построить гистограмму из словаря

    Использование процессора Python падает до 0%, возобновляется после нажатия клавиши во время выполнения скрипта

    Проверка наличия веб-сайта через Python

    Доступ к экземпляру родительской модели из modelform admin inline

    Python - лучший язык программирования в мире.