2012-04-29 84 views
4

おはようございます、graphvizを使用してグラフを生成しようとしています。Graphviz - ノード間の水平エッジ

いくつかのノードの間に水平エッジをモデル化する方法を理解できません。私はこのグラフを生成するために、次のコードを使用します

Graph

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]"; 
} 

Iノードを整列したい[8]、[10B1]、[62] [8]、[9]そして[10] 1水平線

+0

ここでは、世界中の人と夕方、どこかに深夜やどこかに話しています:) –

+0

@SaeedAmiri Right :-)。しかし皆にとって良い一日:-)。 – Nanik

答えて

3

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

+0

ありがとう、それはまさにそれです:-)。 – Nanik

6

他の解決策は、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を使用して似たような達成できます。

ここにはan other example using groupother example using weight(同じ質問)があります。

+0

助けてくれてありがとう:-)。 – Nanik

+0

このデータを含む不正なグラフ(http://pastebin.com/1YeaJPtt)。それを修正する可能性がありますか? – Nanik

+0

はい:http://pastebin.com/NjTN6wC7 - ノードの順序を少し変更し、片方のエッジに 'constraint = false'を追加しました – marapet

関連する問題