100 votes

Langage de graphique Dot - comment créer des arêtes bidirectionnelles automatiquement ?

Voici un exemple très simplifié de mon graphique Dot :

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

Cela crée texte alternatif

A la place, je veux qu'un seul bord soit affiché entre A et B mais avec une double flèche. Je sais comment obtenir la double flèche en tant qu'option globale :

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

Mais cela semble très laid, et tous mes bords ne devraient pas être à double tête.

texte alternatif

Si je traite davantage le graphique et détecte moi-même le double référencement et remplace les deux bords par un seul bord, cela semble correct. Mais je préférerais ne pas devoir faire cette étape supplémentaire

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

texte alternatif

Des solutions meilleures?

130voto

user2598811 Points 51

Vous devriez simplement utiliser:

A -> B [dir=both]

89voto

spenthil Points 1002

Et que dire de 'concentrate=true' ? :

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

avec concentrate=true

De la documentation :

Si vrai, utilise des concentrateurs de bord. Cela fusionne les multi-arêtes en une seule arête et provoque le partage d'une partie de leurs chemins pour les arêtes partiellement parallèles. Cette dernière fonctionnalité n'est pas encore disponible en dehors de dot.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X