web-dev-qa-db-fra.com

Forcer des bords orthogonaux (verticaux ou horizontaux) avec un point

Je voudrais forcer le point à n'afficher que les bords verticaux ou horizontaux entre les nœuds.

J'ai trouvé une demande similaire avec le message Disposition de l'arbre généalogique avec Dot/GraphViz , mais je ne traite pas des arbres, j'espère donc qu'il existe une solution sans insérer de nœuds supplémentaires ...

Si je construis le graphique suivant:

 digraphe G {
 
 splines = ortho 
 
 A [forme = boîte] 
 B [forme = boîte] 
 C [forme = boîte] 
 D [forme = boîte] 
 
 A -> B 
 A -> C 
 
 B -> D 
 C -> D 
 
} 

Ce que je reçois est le suivant:

enter image description here

Mais je voudrais un graphique comme celui-ci:

enter image description here

Comment obtenir un tel rendu?

Edit: l'attribut "splines" ne semble pas fonctionner comme prévu ... Y a-t-il quelque chose que j'ai fait de mal?

27
nocbos

Votre syntaxe semble correcte. Quand je l'exécute, j'obtiens un routage Edge orthogonal (en quelque sorte):

enter image description here

Quelle version possédez-vous?

Je pose la question car le routage Edge orthogonal n'est disponible que dans les versions Graphviz à partir du 28 septembre 2010 et plus récent. Tous les systèmes n'ont pas de versions plus récentes. Sur mon système, je devais télécharger et installer manuellement Graphviz pour obtenir une version plus récente que 2.26.3 (qui date du 26 janvier 2010).

En supposant que votre graphique réel contient plus de 4 nœuds, si vous voulez que les lignes aient un pli et que vous ne voulez pas ajouter de nœuds supplémentaires (invisibles), vous devriez essayer de jouer avec l'attribut graphs nodesep. Voir le code et l'image ci-dessous.

digraph G {

    graph [splines=ortho, nodesep=1]
    node [shape=record]

    A -> {B, C} -> D
}

enter image description here

37
Potherca