Язык точечного графа - как автоматически сделать двунаправленные ребра?

Вот очень упрощенный пример моего точечного графика:

strict digraph graphName {
A->B
B->A
}

Это создает alt text

Вместо этого я хочу, чтобы между A и B было показано одно ребро, но с двойной стрелкой. Я знаю, как получить двойную стрелку в качестве глобальной опции:

strict digraph graphName {
  edge [dir="both"]
A->B
B->A
}

Но это выглядит очень некрасиво, и не все мои лезвия должны быть двуглавыми.

alt text

Если я проделаю дополнительную обработку графа и сам обнаружу двойную ссылку и заменю два ребра одним ребром, все будет в порядке. Но я бы предпочел не делать этот дополнительный шаг

strict digraph graphName {
A->B [dir="both"]
}

alt text

Есть лучшие решения?


person I82Much    schedule 11.08.2010    source источник


Ответы (2)


Как насчет «концентрата = правда» ?:

strict digraph graphName {
concentrate=true
A->B
B->A
}

с концентратом = true

Из документации:

Если это так, используйте концентраторы фронтов. Это объединяет несколько ребер в одно ребро и заставляет частично параллельные ребра разделять часть своих путей. Последняя функция пока недоступна за пределами точки.

person spenthil    schedule 11.08.2010
comment
У меня работает с лейблом, и я использую более старую версию. - person Aaron Hall; 25.04.2014
comment
Если это поможет ... у меня это не сработало, потому что края соединились, а на конце была только одна стрелка. Потом я попробовал строгий диграф ... и тогда он отлично работает. - person philw; 19.03.2015
comment
Это глупо, но это то, чего хотел ОП, такой большой! - person Dan Rosenstark; 22.11.2019
comment
@philw У меня тоже не работает, ребра получаются только с одной стрелкой. Я использую pygraphviz, попробовал pgv.AGraph(directed=True, strict=True), но он тоже не работает, снова два ребра ... Есть предложения? - person Tropilio; 28.04.2020

Вам просто нужно использовать:

A -> B [dir=both]
person user2598811    schedule 19.07.2013
comment
Это избавило меня от лишних строк, и я использую его вместе с верхним ответом там, где это необходимо. - person Aaron Hall; 26.04.2014
comment
Вам не нужны кавычки вокруг обоих - person Yetti99; 21.12.2018
comment
@NoahSussman Это не может быть принятым ответом, потому что он фактически не отвечает на вопрос;) - person Dan Rosenstark; 22.11.2019