Я пишу программу, которая в основном обрабатывает подграф DAG, т. Е. Граф является ориентированным ациклическим c графом, а каждый узел графа является подграфом. Например, для ребра A->B
в группе DAG узел A
является подграфом треугольника, а узел B
- подграфом четырех клики. Ребро A->B
указывает расширение от треугольника до четырех кликов путем добавления одной вершины подграфа и трех ребер подграфа.
+=======+ +=======+
| a---b | | a---b |
| | / | | |\ /| |
| | / | =====> | | X | |
| |/ | | |/ \| |
| c | | c---d |
+=======+ +=======+
A B
Для многих целей я хочу визуализировать этот подграф DAG, т. Е. Визуализацию может показать всю структуру DAG и показать подграф всех узлов одновременно. Также было бы лучше, если бы он также мог отображать свойства вершин и ребер.
Я могу перечислить все узлы и ребра DAG и подграфы всех узлов в любом формате. Но я не знаю, какой инструмент лучше всего подходит для такой визуализации. Я попробовал graphviz , экспортировав DAG подграфа в формат dot
и используя graphviz для преобразования файла dot
в png. Проблема graphviz в том, что он может очень хорошо отображать подграф узлов, но не может показать структуру DAG в удобочитаемой форме. Было бы хорошо, если бы
- для края DAG
A->B
, узел A
располагался над узлом B
. (graphviz
теперь помещает все узлы DAG в одну строку) - узлы размещаются должным образом, так что пересечение между краями DAG минимизировано.
Есть ли другие альтернативы? Заранее спасибо!