2017-07-28 10 views
1

私は与えられたノードとエッジの(GraphViz) "ドット"ファイルを生成しています。ノードは、ランク内のx次元で、ランク=同一であるy次元で順序付けられる。エッジは描画される順にソートされます。残念ながら、「ドット」はx次元の順序を尊重しません。もしそうなら、私は飛行機の二点グラフのための交差点のないレイアウトを達成するだろう。それらが周期的であるか非周期的であるかにかかわらず。ノードとエッジの相対的な順序を考慮したグラフ描画ソフトウエア

私の質問:

  1. がどのようにノードとエッジ
  2. の相対的な順序を尊重する「ドット」は相対的な順序を尊重する「ドット」に代わるものがある伝えることができ、すなわち受け入れレイアウトを作成し、物理的レンダリングを行います。

Sample.dot

申し訳ありませんが、ドットファイルをアップロードすることができませんでした。 Sample.dot file

答えて

0

ありがとうございます。私は "ランク=同じ; 0; 8;"暗黙的には「rank = same; 0-> 8 [style = invis];」と同じ意味です。とにかく、私の心配は交差点ではありませんでした。これはバグだと思われます。ラインを描くには、(6)と(2)に十分な場所が残っているからです。 1つはすべてを少し右に移動しなければならない。 私のアルゴリズムは、ツリー(緑色)の各エッジを上下左右に、クロス(オレンジ)エッジを下/左に、そして後ろ(赤)エッジを上/左に描くような順序を生成します。交差点がない場合、グラフが平面である場合。これを達成するには、(8)を(0)の右に引く必要があります。あなたのテクニックを使用すれば、まさにこれが起こるので、私は本当に幸せです。

digraph { 
    graph [charset=latin1, size ="19,46, 11,12"] 
    node [shape=box, fontname="Comic Sans MS", fontsize=8, height=0.2, width=0.2, ordering=out] 
{ rank=same; 0 -> 8 [style=invis]; } 
{ rank=same; 1; } 
{ rank=same; 2; } 
{ rank=same; 5 -> 9; [style=invis]; } 
{ rank=same; 6 -> 7 -> 10; [style=invis]; } 
{ rank=same;3; } 
{ rank=same;4; } 
0 -> 1 [color=green] 
1 -> 2 [color=green] 
8 -> 2 [color=orange] 
2 -> 5 [color=green] 
5 -> 6 [color=green] 
6 -> 2 [color=red, tailport=w, headport=w] 
5 -> 7 [color=green] 
7 -> 4 [color=green] 
2 -> 3 [color=green] 
2 -> 9 [color=green] 
9 -> 10 [color=green] 
10 -> 3 [color=orange] 
3 -> 4 [color=orange] 
} 

、それ1

のレイアウト
関連する問題