0

ノードにグラフ内の指定された位置を強制しようとしています。そうしている間、さまざまなサブグラフが適切に整列されません。このグラフを生成するコードは次のとおりです。

digraph {
rankdir=LR;
labeljust="l";

subgraph cluster0{

label="t=0" 


n_3_0_0[label="192.168.8.6"
    pos="15,12!"    
    ];
n_3_0_1[label="192.168.8.3"
    pos="10,10!"    
    ];

 n_3_0_0 -> n_3_0_1 ;
 n_3_0_1 -> n_3_0_0 ;
};

subgraph cluster1{

label="t=5"     

n_3_1_0[label="192.168.8.6"
    pos="15,12!"    
    ];
n_3_1_1[label="192.168.8.3"
    pos="10,10!"    
    ];
n_3_1_2[label="192.168.8.9"
    pos="10,12!"    
    ];

 n_3_1_0 -> n_3_1_1 ;
 n_3_1_1 -> n_3_1_0 ;
};


subgraph cluster2{

label="t=10" 

n_3_2_0[label="192.168.8.6"
    pos="14,10!"    
    ];
n_3_2_1[label="192.168.8.3"
    pos="10,10!"    
    ];
n_3_2_2[label="192.168.8.9"
    pos="15,11!"    
    ];
n_3_2_3[label="192.168.8.8"
    pos="18,12!"    
    ];

 n_3_2_0 -> n_3_2_1 ;

 n_3_2_2 -> n_3_2_3 ;
 n_3_2_1 -> n_3_2_0 ;
 n_3_2_3 -> n_3_2_2 ;
};

}

ノードの位置を強制して、このコードをコンパイルしました。

dot -Kfdp -n -Tpng -o sample.png test2.dot

出力グラフは次のとおりです: http://imageshack.us/photo/my-images/826/samplebg.png/ 私が得た出力の問題は: 1. サブグラフが t=0, t- の順に表示されない5, t=10... 2. サブグラフは左揃えではありません。

次のような出力グラフが必要です: http://imageshack.us/photo/my-images/253/needed.png/

タナック君。

4

1 に答える 1

0

すべてのノードの位置を事前に計算したので、実際には fdp は必要ありませんpos。属性を尊重するレイアウトが必要なだけです。

したがって、次のような出力を生成できます。

neato -Tpng sourcedot.gv -O

ただし、サブグラフを正しく積み重ねて重ね合わせないようにするために、その前にノードの位置を調整する必要があります。

digraph {
rankdir=LR;
labeljust="l";

subgraph cluster0{
label="t=0"
n_3_0_0[label="192.168.8.6"
    pos="15,4!"
    ];
n_3_0_1[label="192.168.8.3"
    pos="10,2!"
    ];

 n_3_0_0 -> n_3_0_1 ;
 n_3_0_1 -> n_3_0_0 ;
};

subgraph cluster1{
label="t=5"
n_3_1_0[label="192.168.8.6"
    pos="15,7!"
    ];
n_3_1_1[label="192.168.8.3"
    pos="10,5!"
    ];
n_3_1_2[label="192.168.8.9"
    pos="10,7!"
    ];

 n_3_1_0 -> n_3_1_1 ;
 n_3_1_1 -> n_3_1_0 ;
};


subgraph cluster2{
label="t=10"
n_3_2_0[label="192.168.8.6"
    pos="14,8!"
    ];
n_3_2_1[label="192.168.8.3"
    pos="10,8!"
    ];
n_3_2_2[label="192.168.8.9"
    pos="15,9!"
    ];
n_3_2_3[label="192.168.8.8"
    pos="18,10!"
    ];

 n_3_2_0 -> n_3_2_1 ;

 n_3_2_2 -> n_3_2_3 ;
 n_3_2_1 -> n_3_2_0 ;
 n_3_2_3 -> n_3_2_2 ;
};

}

その結果

ここに画像の説明を入力 (中央のサブグラフのラベルにはまだ微調整が必​​要です)

または、ドットを使用して、ノードも整列させます。

ここに画像の説明を入力

于 2012-09-28T06:59:56.250 に答える