Обзор библиотеки PyQtGraph на языке python для интерактивной визуализации графиков



PyQtGraph это графическая библиотека, написанная на python. GUI элементы реализованы на PyQt4 / PySide и numpy. Она предназначена для использования в математических, научных и инженерных приложениях. Не смотря на то, что эта библиотека полностью написана на python, она очень быстра по причине использования numpy для работы с данными и GraphicsView из Qt для визуализации элементов. PyQtGraph распространяется под MIT open-source лицензией.

Базовый функционал

  • Обычные 2D графики в интерактивном режиме:
    • Line и scatter графики.
    • Данные могут быть сдвинуты/масштабированы с помощью мыши.
    • Добавление новых данных на график в режиме реального времени.

  • Отображение отдельных участков изображений с различными параметрами: 
    • Поддержка большого количества типов исходных данных (int или float, карта глубин любого вида, RGB, RGBA).
    • Функции для получения срезов многомерных данных под различными углами (отлично подходит для томографических снимков).
    • Быстрое обновление для видеопотока или обработки взаимодействий с графиком в режиме реального времени.

  • 3D графика (требует установки Python-OpenGL библиотек):
    • Отображение большого количества данных.
    • Визуализация 3D поверхностей и облаков точек.
    • Рендеринг меша с изоповерхностью.
    • Интерактивный просмотр с вращением/масштабированием c помощью мыши.
    • Базовая визуализация иерархии объектов для более легкого способа манипуляции объектами.

  • Выделение/маркирование регионов интереса на данных:
    • Интерактивные метки в вертикальной/горизонтальных осях и прямоугольные регионы на графике.
    • Виджеты для выделения срезов данных и автоматического масштабирования под этот срез.

  • Легкая генерация новых графиков:
    • 2D графики используют GraphicsView от Qt, которые многофункциональны и надежны.
    • 3D графики используют OpenGL.
    • Все графики используют граф сцены для управления объектами, поэтому новые объекты очень легко создавать.

  • Библиотека виджетов и модули полезны для научных/инженерный приложений:
    • Flowchart виджет для интерактивного прототипирования. Интерфейс схожий с LabView (узлы связаны через линиями).
    • Виджет параметров для отображения / редактирования иерархий параметров (аналогичные тем, которые используются большинством графических приложений GUI).
    • Интерактивная python консоль c возможностью захвата ошибок. Хорошо подходит для дебага/интроспекции кода при анализе взаимодействия пользователя с UI.
    • Dock system позволяет пользователю реорганизовать GUI компоненты по своему желанию. Похоже на Qt dock систему, но немного более гибкая и программируемая.
    • Редактор для редактирования цветных градиентов.
    • SpinBox с отображением SI-единицы и логарифмическим шагом.

Преимущества и недостатки, по сравнению с конкурентами

  • Matplotlib  это более-менее стандартная библиотека построения графиков на python. Если вы начинаете новый проект и не нуждаетесь в каких-либо особенностях, предоставляемых в pyqtgraph, вам следует начать с matplotlib. Он намного более зрелый, имеет огромное сообщество пользователей и производит очень приятное впечатление по качеству визуализации.
  • VisPy - это новая библиотека визуализации 2D / 3D на основе OpenGL, разработанная в сотрудничестве с авторами PyQtGraph, VisVis, Galry и Glumpy. В настоящее время он находится на раннем этапе разработки и имеет более узкую область действия, чем PyQtGraph - он фокусируется на визуализации без инструментария GUI, предоставляемых PyQtGraph. В долгосрочной перспективе мы надеемся, что VisPy должен заменить Qt в качестве механизма рендеринга для 2D-графики и полностью заменить систему pyqtgraph opengl 3D. Больше про VisPy здесь.
  • PyQwt имеет очень большой набор функций и достаточно быстр для работы в реальном времени. Его главный недостаток заключается в том, что он в настоящее время не поддерживается и может плохо работать на различных платформах. Будем надеяться, что в будущем он найдет новых разработчиков, но до тех пор лучше всего избегать PyQwt (первоначальный разработчик PyQwt в настоящее время рекомендует использовать PyQtGraph). Как и matplotlib, PyQwt не обладает некоторыми более продвинутыми функциями pyqtgraph.
  • Chaco - очень интересный проект. Хорошая графика, хорошая скорость и активно развивается. Тем не менее, как и PyQwt, Chaco может быть сложным для установки на различных платформах и не имеет некоторых более сложных функций, представленных в PyQtGraph (хотя у pyqtgraph, конечно же, не хватает многих функций Chaco).
  • GuiQwt - интересный проект с функциями, похожими на pyqtgraph. В настоящее время он основан на PyQwt и, следовательно, имеет некоторые из его недостатков, хотя их исправление предполагается в будущем.

Причины, по которым вы, возможно захотите использовать PyQtGraph

  1. Скорость. Если вы делаете что-либо, требующее быстрого обновления графиков, видео или интерактивности в реальном времени, matplotlib - не лучший выбор. Это, пожалуй, самая большая слабость matplotlib.
  2. Портативность/простота установки. PyQtGraph - это пакет pure-python, что означает, что он работает практически на каждой платформе, поддерживаемой numpy и PyQt, без компиляции. Если вам потребуется переносимость вашего приложения между платформами, это может сильно облегчить вашу жизнь.
  3. PyQtGraph - это гораздо больше, чем просто графическая библиотека. Она стремится охватить многие аспекты разработки научных и инженерных приложений с помощью более продвинутых функций, таких как инструменты анализа ImageView и ScatterPlotWidget, нарезка данных на основе ROI, деревья параметров, блок-схемы последовательностей операций, многопроцессорность и многое многое другое.

Примеры реализованных графиков

Ссылки


Комментарии

Популярные сообщения из этого блога

Подготовка данных для алгоритмов машинного обучения

Выбор метрики в машинном обучении

Задачи сегментации изображения с помощью нейронной сети Unet