LINUX.ORG.RU

Визуализация графов средних размеров

 , ,


1

6

Нужна либа, которая рендерила бы направленный граф (возможно, с циклами), из соотв. структуры данных. Нужные фичи (более ли менее, но в порядке важности):

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

  2. чтобы можно было делать надписи внутри вершин графа;

  3. Чтобы можно было задавать разные цвета конкретным вершинам и ребрам (в зависимости от типа, заданного в структуре вершин/ребер);

  4. чтобы можно было задавать размер точек вершин, хотя бы относительно (типа, вершина типа «A» в два раза больше вершины типа «Б»);

  5. чтобы можно было задавать размер и цвет шрифта для веса/метки ребер;

  6. чтобы регенерация картинки была относительно быстрая при изменении содержимого графа (в идеале в реалтайм, типа я смотрю на граф, моя прога обнаруживает изменение содержимого графа, запускает визуализацию, и через, скажем 50мс все перерисовывается;

  7. чтобы можно было маппить от оконных координат относительно некоей референсной системы координат в оригинальном масштабе (100%) к соотв. структуре данных вершины или ребра.

  8. не слишком тупая автоматическая компоновка вершин (чтобы не было, как иногда в graphviz - а ля растянутая сосиска вместо компактненького пятна из вершин;

Может ли такое gnuplot?

Все, что пробовал использовать - какие-то немасштабируемые малофункциональные поделки типа graphviz.

Предпочтительно, конечно бесплатный опенсорс. Но если есть коммерческие state-of-the-art решения, то можно и такие рассмотреть.

★★★★★

Глянь S. Skiena, The Algorithm Design Manual, 15.10 Drawing Graphs Nicely, там есть несколько ссылок, но скорее всего это уже давно не SotA.

anonymous
()

Не гони на графиз, он для другого.
Звучит (от меня особенно) странно, но под твои задачи подходит какая-нибудь Js либа для графов: браузеры настолько оптимизированы для рисования вектора, что всё другое будет медленнее и сложнее в реализации

Shadow ★★★★★
()

VTK, не?

https://vtk.org/

Либо на opengl напиши. Сложность в позиционировании вершин. Есть много разных работ на эту тему.

Но тут сложно:

вершин будет несколько сотен тысяч чтобы можно было делать надписи внутри вершин графа

Производительность модет пострадать если не аккуратно делать (у меня были текстурированные прямоуголтники и надписи в текстурах и mipmappingом). Думаю гуры могли бы намного лучше сделать.

invy ★★★★★
()
Последнее исправление: invy (всего исправлений: 2)

Всем спасибо за комменты. Наверное, начну с VTK, ибо С++ поддерживается, а в Java и JS я ни бельмеса не понимаю.

seiken ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.