2017-08-02 19 views
1

ここで私が作成しようとしているgraphvizの有向グラフのコードです。これが作成するもののイメージ例は以下の通りです。ノード 'a'を 'e'に切り替える必要があり、ノード 'b'を 'd'に切り替える必要があります。私はコードや他のものでも彼らの位置を変更しようとしました。私が現在持っているものと私が望むものの例は、以下のリンクにあります。Graphvizで2つのノードの位置を切り替える必要があります

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.水平にEを合わせに苦労してでも、このスキームは順にノードを取得しますけれども、私は、この実装で非常に親しまランクに応じて順序を強制する双方向リンク。

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の答えとの組み合わせで自分の問題を解決しました。

答えの鍵は、EとBの間に目に見えない接続を追加してEを物事のループに戻すことです。

関連する問題