15

サークルトポロジでグラフを描画しようとしています。

これが私が期待しているものです: ここに画像の説明を入力してください

これが私のgvファイルです:

digraph g1 {
    layout="circo";
    node [shape = doublecircle]; N4 N6;
    node [shape = circle];
    N0 -> N1 [ label = "{1,0}"];
    N1 -> N2 [ label = "{1,0}"];
    N2 -> N3 [ label = "{1,0}"];
    N3 -> N4 [ label = "{1,0}"];
    N4 -> N5 [ label = "{1,0}"];
    N5 -> N6 [ label = "{1,0}"];
    N6 -> N0 [ label = "{1,0}"];

    N0 -> N4 [ label = "{1,0}"];
    N1 -> N5 [ label = "{1,0}"];
    N2 -> N6 [ label = "{1,0}"];
    N3 -> N0 [ label = "{1,0}"];
    N4 -> N1 [ label = "{1,0}"];
    N5 -> N2 [ label = "{1,0}"];
    N6 -> N3 [ label = "{1,0}"];    
}

上記のグラフの出力画像は次のとおりです。 ここに画像の説明を入力してください

どうすればgraphvizでノードを1のように配置できますか?

4

1 に答える 1

12

ノードの順序を尊重するグラフを作成することが目標である場合、それはそれほど単純ではありません。外部スクリプトを使用してノードの位置を計算し、neatoを使用してレンダリングすることができます。

または、最初に、ノードの正しい順序のみを決定するエッジを使用してノードをレイアウトすることもできます。

digraph g1 {
    node [shape = doublecircle]; N4 N6;
    node [shape = circle];
    edge[label="{1,0}"];
    N0 -> N1 -> N2 -> N3 -> N4 -> N5 -> N6 -> N0;
}

と:

circo graph.gv > tempgraph.gv

次に、残りのエッジをに追加しtempgraph.gvます-閉じる前に以下をコピーして貼り付けます}

N0 -> N4 [ label = "{1,0}"];
N1 -> N5 [ label = "{1,0}"];
N2 -> N6 [ label = "{1,0}"];
N3 -> N0 [ label = "{1,0}"];
N4 -> N1 [ label = "{1,0}"];
N5 -> N2 [ label = "{1,0}"];
N6 -> N3 [ label = "{1,0}"];

neatoそして、オプションでそれをレンダリングし-nます:

neato -n tempgraph.gv -Tpng -O

ラベルの位置を微調整することをお勧めします。

サーコレイアウト

于 2012-09-17T22:28:27.890 に答える