Плоттер графиков GP
Сделал плоттер для анализа численных данных (начал в 2016). Да, не такой как остальные.
Это не клон gnuplot (хотя и называется GP), задачи отличаются. Раньше я использовал gnuplot, но после какого-то обновления не смог из-за медлительности на больших наборах данных и неудобного UI. А необходимые мне функции приходилось делать через жуткие и неудобные костыли.
Типичные задачи у меня для примера вот такие. Едем на е-самокате и записывает параметры с контроллера (отлаживаю контроллер BLDC) и отдельно записываем gps-трек. Таких данных может быть записано много, с разным набором выводимых параметров. И еще нужно синхронизироваться с gps-треком чтобы смотреть параметры и знать в какой момент это было. Может быть захочется сравнить разные проезды между собой.
Для быстрого анализа есть много хотелок к UI. Нужно наличие множества осей, slave-осей (не знаю как назвать, нигде похожего не видел), простых преобразований. Нужно много вариантов масштабирования, а не одно выделение прямоугольной области. И есть еще задачи для real-time построений.
Через скрипт на gnuplot-языке все получается медленнее, каждый раз его переписывать, чтобы построить требуемый график.
Наверно можно было бы сделать все на python + matplotlib + tk. Но мне проще на C + SDL и так больше fps в тяжелых случаях.
Что он может:
- Построение графиков из текстовых файлов с заголовком (или CSV).
или из бинарных плоских файлов (блоки float).
pm.lu_iD@A;pm.lu_iQ@A;pm.flux_H;pm.lu_wS_rpm@rpm; -0.000;-0.131;8;0.00; -0.000;-0.131;8;0.00; -0.000;-0.131;8;0.00;
- Читать конфигурацию в которой можно задать чтение нескольких файлов одновременно, задать (или сгенерировать) много страниц с разными наборами фигур из разных файлов. Это удобно при регулярном анализе данных одинаковой структуры. И что-то еще.
- Много осей на которые можно разбрасывать фигуры как из конфига так и из UI. Операции с масштабами осей.
- Строить графики в real-time из нескольких асинхронных источников.
- Простые опреации с данными, масштабы, вычитание, первые разности/суммы и т.п. Почти все операции могут работать в real-time.
- Экспорт картинки в PNG и SVG.
- Такие мелочи как fuzzy-поиск по спискам в UI, для тяжелых конфигураций с сотнями графиков.
Известные проблемы:
- Кривоватый формат конфига, используются только числовые идентификаторы. Не все возможности доступны из конфига.
- UI сделан врукопашную, без тулкита. От того его может быть сложно поддерживать и добавлять что-то новое.
https://sourceforge.net/projects/graph-plotter/
Говорите ваше «ненужно».