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

je voudrais forcer le point n'affichant que des bords verticaux ou horizontaux entre les noeuds.

j'ai trouvé une requête similaire avec le post arbre généalogique avec point/GraphViz , mais je ne traite pas avec les arbres, donc j'espère qu'il y a une solution sans insérer des noeuds supplémentaires...

si je construis le graphique suivant:

digraph G {

    splines=ortho

    A [ shape=box ]
    B [ shape=box ]
    C [ shape=box ]
    D [ shape=box ]

    A -> B
    A -> C

    B -> D
    C -> D

}

ce que j'obtiens est ceci:

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... Il ya quelque chose que j'ai fait de mal ?

20
demandé sur Community 2013-03-04 02:42:43

1 réponses

votre syntaxe semble correcte. Quand je l'exécute Je reçois le routage de bord orthogonal (de sortes):

enter image description here

quelle version avez-vous?

je demande parce que le routage de bord orthogonal est seulement disponible dans les versions de Graphviz à partir du 28 septembre 2010. Tous les systèmes n'ont pas des versions plus récentes. Sur mon système j'ai dû télécharger et installer manuellement Graphviz pour obtenir un version plus récente que 2.26.3 (qui date du 26 janvier 2010).

en supposant que votre graphe actuel contient plus de 4 noeuds, si vous voulez que les lignes aient une courbure et que vous ne voulez pas ajouter de noeuds supplémentaires (invisibles), vous devriez essayer de jouer avec le les graphiques nodesep attribut. Voir code et image ci-dessous.

digraph G {

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

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

enter image description here

29
répondu Potherca 2013-04-17 14:14:05