Подтвердить что ты не робот

Как заставить узлы перекрываться на определенную сумму в языке точек (graphviz)

Я новичок в расположении точек в графике. Я пытаюсь указать граф в языке точек, и я хочу, чтобы определенные наборы узлов были вынуждены перекрываться определенной суммой (например, 70% их области или что-то с этим эффектом). Я знаю, что могу заставлять позиции x и y узлов и, следовательно, индуцировать перекрытие, но в этом случае я пишу программу С#, которая при заданном вводе выводит соответствующую точку script для графика, поэтому число узлов, и т.д. не жестко закодированы, и поэтому я не могу придумать схему жестких кодов x и y позиций всех узлов. Любая помощь в этом будет принята с благодарностью!

Спасибо большое!

4b9b3361

Ответ 1

Как указывает @ninjalj, одна из опрятных вещей о Graphviz заключается в том, что она позволяет вам красиво представлять графики и избавляться от "недостатков" или "несовершенств", например, перекрытий - например, используя атрибуты, такие как overlap и overlap_scaling.

Однако вы указываете, что:

Я знаю, что могу заставлять узлы x и y узлов и, следовательно, индуцировать перекрытие, но в этом случае я пишу программу С#, которая при заданном вводе выводит соответствующую точку script для графика, поэтому число узлов и т.д. не жестко закодированы, и поэтому я не могу придумать схему жесткого кодирования x и y позиций всех узлов.

Итак, как я вижу, вы говорите, что знаете, что когда вам дают определенный ввод, вы собираетесь сгенерировать определенный график - другими словами, вы знаете количество узлов (и кластеров) как функция входа. Это заставляет меня думать, что предложение @Даниэля Кинсмана может стать для вас способом - то есть реализовать свой собственный механизм компоновки DOT для этой конкретной цели.

Я не говорю, что это просто, однако это не невозможно, и логика, конечно же, сильно зависит от цели вашего приложения.

Но прежде чем делать какую-либо реализацию, я думаю, вам стоит взглянуть на cluster функциональность, уже встроенную в graphviz (который @Daniel Kinsman также указывает), и подумайте о том, действительно ли это стоит дополнительных усилий для выполнения пользовательской реализации механизма компоновки DOT или если для вас может быть достаточно функциональности кластера.

Ответ 2

Это может быть полезно: вы можете использовать графический формат dot, который выводит узлы и их явные позиции выкладки. Затем вы можете прочитать его и изменить свои размеры. Трудно сказать, поможет ли это вашей конкретной потребности без демонстрационных изображений того, что именно вы хотите. Также это может быть не лучшее решение. Просто подумал, что добавлю его в арсенал инструментов, которые вы можете использовать.