Как отмечает @ninjalj, одна из замечательных особенностей graphviz заключается в том, что он позволяет вам красиво представлять графики и избавляться от «недостатков» или «недостатков», таких как перекрытия, например используя такие атрибуты, как overlap
и _ 2_.
Однако вы указываете, что:
Я знаю, что могу принудительно расположить узлы по осям x и y и, таким образом, вызвать перекрытие, но в этом случае я пишу программу на C #, которая при определенных входных данных выводит соответствующий точечный скрипт для графа, поэтому количество узлов и т. Д. не жестко запрограммирован, поэтому я не могу придумать схему для жесткого кодирования позиций x и y всех узлов.
Итак, насколько я понимаю, вы говорите, что знаете, что когда вам дают определенный ввод, вы собираетесь сгенерировать определенный график - другими словами, вы знаете количество узлов (и кластеров) как функцию от вход. Это заставляет меня думать, что предложение @Daniel Kinsman может быть для вас подходящим вариантом - то есть реализация вашего собственного механизма компоновки DOT для этой конкретной цели.
Я не говорю, что это просто, однако это не невозможно, и необходимая логика, конечно, во многом зависит от цели вашего приложения.
Но прежде чем приступить к реализации, я думаю, вам следует взглянуть на cluster
функциональность, уже встроенную в graphviz. (на что также указывает @Daniel Kinsman) и подумайте, действительно ли стоит прилагать дополнительные усилия для реализации пользовательской реализации механизма макета DOT или вам может хватить функциональности кластера.
person
Lasse Christiansen
schedule
06.09.2012
dot
в том, чтобы избежать перекрытия краев и узлов? - person ninjalj   schedule 06.09.2012