Я часами искал ответ на этот вопрос, но в большинстве случаев либо вопрос касается графиков / диаграмм (а не графиков, как в «графе потока управления»), либо ответ «просто используйте graphviz» - это правильный ответ.
Однако у меня есть некоторые ограничения и требования, которые делают «просто использовать graphviz» без ответа.
- Полный график достаточно велик, поэтому невозможно сгенерировать graphviz для всего этого.
- Узлы и ребра будут динамически добавляться и удаляться.
- Узлы содержат много информации, которая будет скрыта по умолчанию и будет расширена по запросу (представьте, что каждый узел имеет вид таблица с расширяемыми строками / столбцами)
- Я хочу иметь возможность показывать только подмножество графика по запросу, например, для таких функций, как «показывать только доступную часть графика с этого узла» или «показать все простые пути от этого узла к этому узлу ".
В основном я хочу иметь возможность начать рисовать узлы и ребра на 2D-плоскости, а также добавить новые узлы и ребра dyn amically. Хорошо, если узлы / ребра перемещаются по мере добавления нового материала. Хотя у меня пока нет жестких требований к этому, было бы хорошо, если бы это выглядело «красиво» - например, если узел имеет много входящих ребер (это ориентированный граф), в идеале он был бы в центре место на плоскости со всеми остальными узлами вокруг него и т. д. c.
Все, что меня заводит, будет полезно. Спасибо.
(я не знаю, какой ярлык добавить к этому, добавив «теорию графов», потому что я не знаю, что еще добавить)