Нужна либа, которая рендерила бы направленный граф (возможно, с циклами), из соотв. структуры данных. Нужные фичи (более ли менее, но в порядке важности):
-
чтобы можно было масштабировать картинку без проблем с очень широким диапазоном, ибо вершин будет несколько сотен тысяч;
-
чтобы можно было делать надписи внутри вершин графа;
-
Чтобы можно было задавать разные цвета конкретным вершинам и ребрам (в зависимости от типа, заданного в структуре вершин/ребер);
-
чтобы можно было задавать размер точек вершин, хотя бы относительно (типа, вершина типа «A» в два раза больше вершины типа «Б»);
-
чтобы можно было задавать размер и цвет шрифта для веса/метки ребер;
-
чтобы регенерация картинки была относительно быстрая при изменении содержимого графа (в идеале в реалтайм, типа я смотрю на граф, моя прога обнаруживает изменение содержимого графа, запускает визуализацию, и через, скажем 50мс все перерисовывается;
-
чтобы можно было маппить от оконных координат относительно некоей референсной системы координат в оригинальном масштабе (100%) к соотв. структуре данных вершины или ребра.
-
не слишком тупая автоматическая компоновка вершин (чтобы не было, как иногда в graphviz - а ля растянутая сосиска вместо компактненького пятна из вершин;
Может ли такое gnuplot?
Все, что пробовал использовать - какие-то немасштабируемые малофункциональные поделки типа graphviz.
Предпочтительно, конечно бесплатный опенсорс. Но если есть коммерческие state-of-the-art решения, то можно и такие рассмотреть.