Есть ли готовая библиотека для построения 2D / 3D-графиков для C++?

Я рассмотрел различные варианты построения функций (или других типов графиков) в интерактивном окне. Я в основном использую wxWidgets, но я был бы открыт для любых других «интерфейсов».

Глядя на то, что доступно, вот что я нашел:

wxPlot: Не обновлялся с 2006 года. Но это был бы хороший кандидат, если бы он был ...

wxMathPlot: Очень новые, незрелые, мало функций (все еще активны?)

libgraph: Устаревший, без повторной обработки, только 2D и выводит только изображения.

koolplot: Слишком просто, нет контроля над созданным окном.

EasyBMP: Очень простой, вывод только изображений.

plotutils: только командная строка.

участок: API C и C++ почти не поддерживаются. Фактически на этом основан wxPlot. Также может быть подходящим кандидатом, если мы обновим интерфейсы C и C++.

Любые комментарии? Идеи?

Спасибо!

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
74
0
110 164
14

Ответы 14

Может ли wxChart быть вариантом? Однако я сам им не пользовался, и похоже, что он давно не обновлялся.

Просто идея: используйте Python как встраиваемый язык сценариев для построения графиков. У Python множество графические библиотеки.

Если вы не против встраивания интерпретатора Python, вы получите множество других преимуществ от наличия языка сценариев в своем приложении, а также доступа к библиотекам, с которыми вы связались. +1

ConcernedOfTunbridgeWells 24.12.2008 13:25

если по сравнению с запись данных в файлы и использование системного вызова для запуска скриптов py, что удобнее и быстрее?

zhangxaochen 20.06.2016 15:41

@zhangxaochen, это зависит от того, что вы делаете.

jfs 20.06.2016 15:47

OpenGL. Однако это БУДЕТ сложно и, возможно, переписать колесо. Имейте в виду, что OpenGL - это общая 3D-библиотека, а не конкретная библиотека графиков, но вы можете реализовать построение графиков на ее основе.

Проголосовали против, потому что я не думаю, что рекомендация использовать свой собственный вопрос с рекомендацией библиотеки на самом деле не дает ответа на него.

antipattern 12.11.2015 18:08

В свое время я обнаружил, что игровая библиотека Allegro проста в использовании. Стоит взглянуть.

Мы используем древнюю версию ComponentOne Диаграмма.

AntiGrain Geometry (AGG). http://www.antigrain.com/. Это библиотека 2D векторной графики с открытым исходным кодом. Это отдельная библиотека без дополнительных зависимостей. Имеет хорошую документацию. Библиотека построения графиков Python matplotlib использует AGG в качестве одного из бэкэндов.

AGG - это механизм рендеринга, а не библиотека для построения графиков. Использование его для построения графиков потребует повторной реализации matplotlib поверх него.

Thelema 17.04.2013 02:38

Взгляните на wxArt2d, это полный фреймворк для 2D-редактирования и построения графиков. Дополнительные примеры см. В скриншоты.

Некоторые интересные особенности:

  • Чтение и запись SVG и CVG
  • Несколько просмотров одного и того же документа
  • Изменения обновляются при простое
  • Оптимизирована отрисовка 2d объектов

Привет! Я разработчик wxMathPlot! Проект активен: мне просто потребовалось много времени, чтобы получить новую версию, потому что код нужно было частично переписать, чтобы ввести новые функции. Обратите внимание на новую версию 0.1.0: это большое улучшение по сравнению со старыми версиями. Во всяком случае, он не обеспечивает 3D (даже если я всегда об этом думаю ...).

умеет ли он строить график в «реальном времени»? (или почти в реальном времени)? Для ясности - я хочу иметь возможность обновлять данные из источника и рисовать по мере поступления новых точек.

Tim 01.10.2009 00:48

Я программно предоставляю необходимые входные файлы исполняемому файлу GNUPlot и вызываю его с помощью функции system(). Это подходит для моей ситуации, так как я хочу только визуализировать свои данные во время исследования. Но если вы хотите, чтобы функция построения графиков была интегрирована в ваш исполняемый файл, возможно, это не для вас :)

Взгляните на Gnuplot iostream: единую библиотеку заголовков, обеспечивающую интуитивно понятный доступ к функциям Gnuplot прямо из вашего кода C++. Я люблю это!

DarioP 14.01.2016 13:30

Я все про КОРЕНЬ для этих нужд. Однако это довольно сложно, если вам не нужна вся аналитическая поддержка.

Я знаю, что это старый комментарий, но спасибо, что указали на ROOT. Я не слышал об этом, и это будет очень полезно!

Alex Hirzel 28.02.2015 15:31

Мне очень неприятно видеть хорошие библиотеки, выпущенные под GNU, это буквально делает их бесполезными.

metablaster 07.06.2020 05:26

@metablaster Я знаю и широко использовал ROOT и TMVA в свое время, и они очень удобны, если вы используете систему на основе nix. С тех пор, как я перешел на Windows, я с трудом могу его построить, не говоря уже о том, чтобы скомпилировать любой из моих собственных кодов. На самом деле это не имеет значения, потому что я не работаю с CERN, но время от времени мне просто не хватает удобства.

Rajat Mondal 28.03.2021 18:36

MathGL имеет много типов графиков, интерфейс C / Fortran и базовый анализ данных

У вас есть зрелый Qwt. Где-то скрывается 3D-версия. Однако эстетический результат меня никогда не устраивал.

Возможно, стоит дождаться выхода Qt3D, чтобы самому легко написать что-нибудь получше.

вы можете использовать ДИСЛИН

это довольно аккуратно!

Они требуют оплаты библиотеки.

metablaster 07.06.2020 05:42

Хоть эта нить старая но золотая. QCustomPlot также очень рекомендуется для дополнения этого списка.

Другие вопросы по теме