Placer les grappes sur le même rang dans Graphviz

je voudrais que ces deux noeuds apparaissent au même niveau:

enter image description here

digraph G {
    subgraph cluster1 {
        label="Local Datacenter";
        router1;
        host1;
    }
    subgraph cluster2 {
        label="Remote Datacenter";
        router2;
        host2;
    }
    router1 -> router2;
    router2 -> host2;
    router1 -> host1;
}

j'ai essayé d'utiliser rank=same et <!-Mais ils ne me donnent pas ce dont j'ai besoin.

fait intéressant, si je mets rankdir=LR et commente les deux arêtes routeur-hôte, ça me donne exactement le look que je veux - mais j'aimerais laisser les arêtes intactes.

23
demandé sur Potherca 2011-07-26 05:58:39

2 réponses

Vous pouvez simplement modifier l'arête entre les routeurs:

router1 -> router2[constraint=false];

constraint indique si le bord doit être utilisée dans le classement des nœuds.

28
répondu marapet 2011-07-26 06:24:02

vous pouvez utiliser le (non documenté?) newrank attribut graph (ajouté dans GraphViz 2.30) Pour Activer le nouvel algorithme de classement qui permet de définir rank=same pour les noeuds qui appartiennent à des clusters.

Ajoutez la ligne suivante en haut:

newrank=true;

ajouter la ligne suivante après le cluster définitions:

{ rank=same; router1; router2; }

voici le graphique résultant:

routers with same rank

44
répondu dubek 2013-08-23 20:03:13