2016-10-26 2 views
6

Ich habe versucht, so etwas wie dieses mit Graphviz zu machen:versucht, auf Platz Subgraphen in graphviz erstellen

x y z 
    | | | 
    # | | 
    a#__\| | 
    # /#b | 
    # #__\| 
    # # /#c 
    # d#/__# 
    # #\ x 
    # # | 
    e#/__# | 
    #\ # | 

Aber Ranking scheint nicht zu funktionieren, wie ich erwartet. Ich möchte e unter allen anderen Knoten sein.

digraph x 
{ 
    rankdir = tb; 
    size = "7.5, 7.5"; 
    rank = source; 
    a -> b -> c -> d -> e; 
    subgraph "cluster x" 
    { 
    style=filled; 
    color=lightgrey; 
    label="x"; 
    a -> e [style=invis]; 
    } 
    subgraph "cluster y" 
    { 
    label="y"; 
    b -> d [style=invis]; 
    } 
    subgraph "cluster z" 
    { 
    label="z"; 
    c; 
    } 
} 

First attempt

Ich habe versucht clusterrank = global, welche Art von Arbeiten zu verwenden, aber dann werden die Subgraphen nicht in eine offensichtliche Säule getrennt und es gibt Überschneidungen über die Spalten. Es geht auch nicht so, wie ich es möchte. Das folgende Bild zeigt eine der Überschneidungen in rot, aber wie Sie es sehen können 4.

2nd attempt

digraph x 
{ 
    rankdir = tb; 
    rankstep=equally; 
    clusterrank = global; 
    size = "7.5, 7.5"; 
    a -> b -> c -> d -> e; 
    subgraph "cluster x" 
    { 
    style=filled; 
    color=lightgrey; 
    label="x"; 
    a -> e [style=invis]; 
    } 
    subgraph "cluster y" 
    { 
    label="y"; 
    b -> d [style=invis]; 
    } 
    subgraph "cluster z" 
    { 
    label="z"; 
    c; 
    } 
} 

Ich habe versucht, einen separaten Cluster zu machen, die eine garantierte Top haben wird zu Bottom-Ranking und ordnen Sie dann die entsprechenden Cluster zusammen, aber es tut das gleiche wie der vorherige Versuch, Entfernen der Boxen beim ersten Versuch gesehen und unerwünschte Überlappungen verursacht.

digraph x 
{ 
    rankdir = tb; 
    1 -> 2 -> 3 -> 4 -> 5; 
    a -> b -> c -> d -> e; 
    { rank=same; 1; a; } 
    { rank=same; 2; b; } 
    { rank=same; 3; c; } 
    { rank=same; 4; d; } 
    { rank=same; 5; e; } 

    subgraph "cluster x" 
    { 
    style=filled; 
    color=lightgrey; 
    label="x"; 
    a -> e [style=invis]; 
    } 
    subgraph "cluster y" 
    { 
    label="y"; 
    b -> d [style=invis]; 
    } 
    subgraph "cluster z" 
    { 
    label="z"; 
    c; 
    } 
} 

3rd attempt

Wer irgendwelche Ideen zu versuchen, und das Layout Ich will zu bekommen?

Als Nebenbemerkung habe ich versucht, in das Graphviz-Forum in dieser Angelegenheit einloggen, aber festgestellt, dass die Anmeldung von this page scheint nicht zu funktionieren. Ich bekomme immer wieder ein Timeout-Problem. Ich überprüfe meinen E-Mail-Account und nichts ist da. Ich versuche, ein neues Konto mit derselben E-Mail zu erstellen, und es wird angegeben, dass das Konto bereits verwendet wird. Ich versuche dann, sie dazu zu bringen, mein Passwort zurückzusetzen, und ich bekomme ein weiteres Timeout-Problem.

Weiß jemand, wen ich kontaktieren kann, um dieses nervige Login-Problem zu beheben? Vielleicht kann jemand, der bereits eingeloggt ist, das für mich posten?

Antwort

0

Führen Sie einen Punkt mit -Gnewrank aus. Das wird Ihnen helfen, basierend auf Ihrer Skizze. Wenn weitere Anpassungen erforderlich sind, geben Sie bitte an, wonach Sie suchen.

0

Ihre letzte Lösung funktionieren wird, sobald Sie ein kleines Tuning tun

Verwenden newrank=true Cluster von „Unboxing“

mit splines=...

Wiedergabe vermeiden Pfeile einstellen

definiert Etikett als separater Knoten.

digraph x 
{ 
    rankdir = tb; 
    newrank=true; 
    splines=ortho; 

    0 -> 1 -> 2 -> 3 -> 4 -> 5; 
    X; Y; Z; 
    a -> b -> c -> d -> e; 
    { rank=same; 0 X Y Z} 
    { rank=same; 1; a; } 
    { rank=same; 2; b; } 
    { rank=same; 3; c; } 
    { rank=same; 4; d; } 
    { rank=same; 5; e; } 

    subgraph "cluster x" 
    { 
    style=filled; 
    color=lightgrey; 
    a -> e [style=invis]; 
    } 
    subgraph "cluster y" 
    { 
    b -> d [style=invis]; 
    } 
    subgraph "cluster z" 
    { 
    c; 
    } 
} 

enter image description here