2017-08-02 105 views
1

這是我想要創建的graphviz digraph的代碼。下面創建一個示例圖像,我想用'e'切換節點'a',並且需要用'd'切換節點'b'。我曾嘗試在代碼和其他內容中改變自己的立場。我現在擁有的和我期望的例子在下面的鏈接中。我需要切換Graphviz中兩個節點的位置

digraph { 

    graph[nodesep=1.75, ranksep=1.25, pad=".5", rankdir=LR]; 

    node[shape=circle]; 
    F[label=f]; 
    A[label=a]; 
    E[label=e]; 
    B[label=b]; 
    D[label=d]; 
    C[label=c]; 

    {rank=min; F}; 
    {rank=same; A; E}; 
    {rank=same; B; D}; 
    {rank=max; C}; 

    F -> {D}; 
    A -> {B D F}; 
    E -> {D F}; 
    B -> {C F}; 
    D -> {B}; 
    C -> {D}; 
} 

Current Plot

Desired Plot

回答

1

我非常接近這個實現,但仍然很難與D.水平對齊Ë不過這個方案得到節點指定使用無形的順序根據等級執行順序的定向鏈接。

digraph { 
rankdir=LR; 
node[shape=circle]; 
nodesep=1.75; ranksep=1.25; pad=0.5; 

{rank=same; rank=min; F; } 
{rank = same; A -> E [style=invis]; } 
{rank= same; B -> D [style=invis]; } 
{rank=same; rank=max; C;} 

F[label=f]; 
A[label=a]; 
E[label=e]; 
B[label=b]; 
D[label=d]; 
C[label=c]; 

A -> B; 
A -> D; 
A-> F; 
B-> C; 
B-> F; 
C-> D; 
D-> B; 
F-> D; 

nodesep=0.75; 
E -> D; 
E-> F; 
} 

enter image description here

+0

如何對齊'e'? –

+1

@MichaelDiCioccio我不知道,我的朋友。我今天早上嘗試並嘗試過。我知道,爲什麼它被呈現出來,這真是奇怪。 – TomServo

+1

這是瘋了,謝謝。我會試着從你的答案中找出答案,但從技術上講,你確實回答了我的問題,所以這會得到綠色檢查。 –

1

我糾正我上面的代碼,並與@JLH答案組合解決我自己的問題。

digraph { 

    graph[nodesep=1, ranksep=1, pad=".5"]; 
    rankdir="LR"; 

    node[shape=circle]; 
    F[label=f]; 
    A[label=a]; 
    E[label=e]; 
    B[label=b]; 
    D[label=d]; 
    C[label=c]; 

    {rank=min; F}; 
    {rank=same; A E} 
    {rank=same; B D} 
    {rank=max; C}; 

    F -> {D}; 
    A -> {B D F}; 
    E -> {D F}; 
    B -> {C F} 
    D -> {B}; 
    C -> {D}; 

    edge[style=invis]; 
    A -> E 
    E -> B 
    B -> D 
} 

答案的關鍵是在E和B之間添加一個不可見的連接,它將E拉回到事物的循環中。

Correct Image (give or take a few curved lines)