У меня есть программа python, которая отображает данные из файла в виде контура для каждой строки в этом текстовом файле. В настоящее время у меня есть 3 отдельных контура в моем интерфейсе. Неважно, читаю ли я данные из файла или загружаю его в память перед выполнением скрипта, я могу получить только ~ 6 кадров в секунду от контурных графиков.Увеличьте скорость перерисовки контура в matplotlib
Я также пробовал использовать только один контур и остальные нормальные сюжеты, но скорость только увеличилась до 7 кадров в секунду. Я не считаю, что это так расчетно облагается налогом, чтобы нарисовать несколько строк. Есть ли способ сделать это значительно быстрее? В идеале было бы неплохо получить как минимум 30 кадров в секунду.
Путь рисую контур является то, что для каждой строки моих данных я удалить предыдущий:
for coll in my_contour[0].collections:
coll.remove()
и добавить новый один
my_contour[0] = ax[0].contour(x, y, my_func, [0])
В начале кода, У меня есть plt.ion()
, чтобы обновить графики, когда я их добавляю.
Любая помощь будет оценена по достоинству.
Благодаря
Скорость, с которой вы можете обновить график, зависит от двух вещей: (a) времени, которое требуется для вычисления новых данных, и (b) времени, необходимого для рисования осей. В общем, трудно сказать, какой из них занимает больше времени в вашем случае. К сожалению, «контур» должен пересчитывать данные на каждой итерации, поэтому ожидается небольшой выигрыш. Время рисования потенциально может быть уменьшено с помощью blitting, но я сомневаюсь, что это принесет вам от 7 до 30 кадров в секунду. – ImportanceOfBeingErnest
Ну, добавление большего количества контуров не приводит к резкому уменьшению fps. Теперь я попробовал 6 контуров, и я получаю 5.5-6.5 fps, когда с одним я получаю 7-7.5fps, что-то происходит в matplotlib, когда он обновляет графики, которые навсегда ожидают анимации. Кроме того, если я уменьшаю плотность сетки для участка контура, это существенно увеличивает частоту кадров на долю fps. – UN4
Это похоже на [blitting] (http://stackoverflow.com/questions/40126176/fast-live-plotting-in-matplotlib-pyplot), действительно, может дать преимущество. – ImportanceOfBeingErnest