Ускорение Matplotlib - PullRequest
       2

Ускорение Matplotlib

4 голосов
/ 11 марта 2020

В настоящее время я работаю над графиком в реальном времени, но визуализация действительно медленная. Я хотел бы знать, что в целом вы можете сделать, чтобы ускорить процесс в Matplotlib:

  • Как бэкэнд влияет на производительность? Существуют ли бэкэнды, которые лучше в режиме реального времени, чем другие?
  • Можно ли уменьшить разрешение для увеличения FPS?
  • Почему FPS моего графика увеличивается, если я уменьшаю размер окна? Почему FPS резко падает, если я переключаюсь в полноэкранный режим?

Я также пытался отключить все, что мне не нужно:

ax.set_xticklabels(())
ax.set_yticklabels(())
ax.set_xticks([])
ax.set_yticks([])
ax.axis('off')
ax.get_xaxis().set_visible(False)
ax.get_yaxis().set_visible(False)

Однако эффект незначителен , Есть ли еще вещи, которые я могу отключить?

Я также хотел бы знать, можно ли отключить кнопки (кнопка «Домой» и т. Д. c .., см. Ниже) окна, которое открывается, когда создание графа Может ли отключение этих кнопок увеличить скорость?

enter image description here

Я также обнаружил, что выполнение следующих действий

fig.canvas.draw_idle()
fig.canvas.start_event_loop(1e-9)

намного медленнее для обновление графика, чем

fig.canvas.draw_idle()
self.fig.canvas.update()
self.fig.canvas.flush_events()

Есть ли еще лучшие способы обновления объектов на графике?

1 Ответ

1 голос
/ 11 марта 2020

Как сервер влияет на производительность? Существуют ли бэкэнды, которые лучше для построения графиков в реальном времени, чем другие?

Бэкэнд играет две роли: во-первых, он рендерит все, поэтому чем быстрее рендеринг, тем быстрее вывод. Во-вторых, используемый набор инструментов GUI может играть роль, поскольку он может ограничивать скорость отображения обновленного холста. Кажется, например, "Qt5Agg" быстрее, чем "TkAgg".

Можно ли уменьшить разрешение, чтобы увеличить FPS?

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

Почему FPS моего графика увеличивается, если я уменьшаю размер окна? Почему FPS резко падает, если я переключаюсь в полноэкранный режим?

Как указано выше, больше пикселей, которые нужно рисовать на экране, означает более медленный рендеринг.

Есть еще что я могу отключить?

Мы не знаем, что у вас в коде, поэтому мы не можем знать, что отключить.

Может отключиться эти кнопки увеличивают скорость?

Нет.


Наконец, fig.canvas.draw_idle() само по себе должно быть достаточно для обновления графика, потому что обычно у вас уже будет запущено событие l oop. Перезапуск события l oop не помогает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...