8

こんばんは、graphvizを使用してグラフを生成しようとしています。

一部のノード間の水平エッジをモデル化する方法がわかりません。次のコードを使用して、このグラフを生成します。

グラフ

digraph{ rankdir=LR;
//{rank=same; "[0]"; "[10B1]"; "[62]"; "[8]"; "[9]"; "[10]";}
"[0]"->"[37]"; "[37]"->"[4]"; "[37]"->"[8]";
"[8]"->"[9]"; "[9]"->"[10]"; "[62]"->"[8]";
"[0]"->"[10B1]"; "[10B1]"->"[62]"; "[0]"->"[2]";
"[2]"->"[3]"; "[7]"->"[8]"; "[4]"->"[7]";
}

ノード[8]、[10B1]、[62] [8]、[9]、[10]を1本の水平線に揃えたいと思います。

4

2 に答える 2

6

これらのノードをクラスターに配置する必要があります。そのクラスター内でrank=lr、ノードを左から右に配置するように設定できます。グラフの残りの部分に接続エッジを追加する前に、クラスターとクラスターに必要なノードを定義することが重要です。

于 2012-04-29T17:44:45.783 に答える
6

もう1つの解決策は、整列する必要のあるノードに同じgroup属性の値を共有させることです。

digraph{
rankdir=LR;

node[group=main];
"[0]"; "[10B1]"; "[62]"; "[8]"; "[9]";
node[group=""];

"[0]"->"[37]";
"[37]"->"[4]";
"[37]"->"[8]";
"[8]"->"[9]";
"[9]"->"[10]";
"[62]"->"[8]";
"[0]"->"[10B1]";
"[10B1]"->"[62]";
"[0]"->"[2]";
"[2]"->"[3]";
"[7]"->"[8]";
"[4]"->"[7]";
}

いくつかのエッジを調整weightまたは使用することで、同様のことを実現できます。constraint=false

これは、グループを使用した別の例と、重みを使用した別の例です(同じ質問)。

于 2012-04-29T18:00:24.297 に答える