2017-08-23 10 views
0

グラフ構造をいくつかレンダリングしています。これまで、サブグラフの使用は、私が探しているものを達成するために最適ではありませんでした。Graphvizは、ノード間にエッジがない場合、ランク属性を無視します。

この(彼らはこの順序に従う必要があるので、色は、階層内の異なる階層を表します)私は

enter image description here

を取得したいと思いものです。この画像を作成するために、私は目に見えないリンクを使用しましたが、実際のシナリオではこれは実際にはオプションではありません。

しかし、現時点ではこれは、私はGraphvizのは、エッジの前にランクを尊重することがかのうです。この.DOTファイル

graph { 
    // Global config 
    rankdir=BT 
    node [style="filled" fontcolor="white" shape="box"] 
    // Rank (hierarchies) 
    { rank=same; 258 } 
    { rank=same; 259 } 
    { rank=same; 260 } 
    { rank=same; 261 262 } 
    // Nodes 
    // Tasks 
    258 [label="John Cleese" fillcolor="#E8B04D"] 
    // Project Goals 
    259 [label="Michael Palin" fillcolor="#C0C56B"] 
    // Identities 
    260 [label="Eric Idle" fillcolor="#FF8D61"] 
    // Virtues 
    261 [label="Graham Chapman" fillcolor="crimson"] 
    262 [label="Terry Jones" fillcolor="crimson"] 
    // Edges 
    259 -- 260 [style="bold" color="#3790af"] 
} 

を使用して enter image description here

を取得しています何ですか?もしそうなら、私はどのように進むでしょうか?

答えて

1

さまざまなランク(正しく設定したもの)を必要に応じて動作させるための目に見えないエッジがいくつか追加されると、問題は簡単に解決されます。下の方に3つのに見えないエッジの単純な加算注意:

graph { 
    // Global config 
    rankdir=BT 
    node [style="filled" fontcolor="white" shape="box"] 
    // Rank (hierarchies) 
    { rank=same; 258 } 
    { rank=same; 259 } 
    { rank=same; 260 } 
    { rank=same; 261 bl 262 } 
    // Nodes 
    // Tasks 
    258 [label="John Cleese" fillcolor="#E8B04D"] 

    // Project Goals 
    259 [label="Michael Palin" fillcolor="#C0C56B"] 

    // Identities 
    260 [label="Eric Idle" fillcolor="#FF8D61"] 

    // Virtues 
    261 [label="Graham Chapman" fillcolor="crimson"] 
    262 [label="Terry Jones" fillcolor="crimson"] 

    // Edges 
    259 -- 260 [style="bold" color="#3790af"] 
258--259 [style=invis] 
260--261 [style=invis] 
260--262 [style=invis] 
260--bl [style=invis] 

bl [style=invis label="" height=0, width=0] 

} 

を私はまた、より良いグラフを中心助けるために、中央にblを目に見えないバランスノードを追加しました。

enter image description here

+0

ありがとう。私はすでにそれを試して、それは動作します。私は実際に代替案を探しています。なぜなら、これらのファントム・エッジをプログラム的に追加することは非常に複雑かもしれないからです。代替手段がない場合は、これを行う必要があります! – Sebastialonso

+0

@Sebastialonso [OK]を、ありがとう、私の最新の編集を参照してください、それが役立つ場合は、グラフのバランスをより良いものに役立ちます。残念なことに、レンダリングエンジンは、様々な部分グラフが、「ランク同義」であっても、何らかのエッジなしで異なるランク上にある必要があることを認識することはできません。 – TomServo

関連する問題