web-dev-qa-db-fra.com

Langage graphique à points - comment créer automatiquement des bords bidirectionnels?

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

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

Cela crée alt text

Au lieu de cela, je veux un seul bord montré entre A et B mais avec une double tête de flèche. Je sais comment obtenir la double pointe de flèche comme option globale:

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

Mais cela a l'air très moche, et tous mes bords ne devraient pas être à double tête.

alt text

Si je fais plus de traitement du graphique et détecte moi-même la double référence et remplace les deux bords par un seul bord, cela semble OK. Mais je préfère ne pas avoir à faire cette étape supplémentaire

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

alt text

De meilleures solutions?

72
I82Much

Que diriez-vous de "concentrer = vrai"?:

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

with concentrate=true

De la documentation :

Si vrai, utilisez des concentrateurs Edge. Cela fusionne plusieurs tronçons en un seul bord et fait en sorte que les bords partiellement parallèles partagent une partie de leurs chemins. Cette dernière fonctionnalité n'est pas encore disponible en dehors de dot.

53
spenthil

Vous devez simplement utiliser:

A -> B [dir = "both"]

78
user2598811