Мова крапкових графіків - як автоматично зробити двонаправлені ребра?


83

Ось дуже спрощений приклад мого графіка Dot:

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

Це створює текст заміщення

Натомість я хочу один край, показаний між А і В, але з подвійною головкою стрілки. Я знаю, як отримати подвійну стрілку як глобальний варіант:

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

Але це виглядає дуже потворно, і не всі мої краї повинні бути двосторонніми.

текст заміщення

Якщо я більше обробляю графік і сам виявляю подвійне посилання і замінюю два ребра одним ребром, це виглядає нормально. Але я волів би не робити цей зайвий крок

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

текст заміщення

Є якісь кращі рішення?

Відповіді:


67

Як щодо "концентрат = істина" ?:

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

з концентратом = істина

З документації :

Якщо так, використовуйте крайові концентратори. Це об’єднує багаторівні в одне ребро і змушує частково паралельні ребра ділити частину своїх шляхів. Остання функція ще не доступна поза крапкою.


У мене працює етикетка, і я використовую стару версію.
Аарон Холл

1
Якщо це допомагає ... це не спрацювало для мене, настільки, що воно злило краї, а лише поставило на кінці одну стрілку. Потім я спробував "суворо розкласти" ... і тоді це працює чудово.
philw

Це безглуздо, але саме цього хотів ОП, такий великий!
Ден

@philw Це теж не працює для мене, я отримую краї лише за допомогою однієї стрілки. Я використовую pygraphviz, і я спробував pgv.AGraph(directed=True, strict=True), але він теж не працює, я знову отримую два краї ... Будь-які пропозиції?
Тропіліо

101

Вам слід просто використовувати:

A -> B [dir=both]

4
Це врятувало кілька зайвих рядків, і я використовую їх, а також відповідь у верхній частині, де це доречно.
Аарон Холл

2
Вам не потрібні лапки навколо "обох"
Yetti99

@NoahSussman Це не може бути прийнятою відповіддю, оскільки насправді не відповідає на запитання;)
Ден
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.