2017-08-24 9 views
1

私はgraphvizを使ってコマンドツリーを描きます。デフォルトでは、同じ名前のノードをマージしています。これを禁止する方法は? 例:コマンドdot -Tsvg -o cli_tree.svg SHOW_CONFIGURATION.dotで描くのgraphvizでノードをマージする方法を教えてください。

strict digraph 2 { 
rankdir=LR; 
SHOW_CONFIGURATION -> INTERFACES_eth; 
SHOW_CONFIGURATION -> INTERFACES_vlan; 
SHOW_CONFIGURATION -> INTERFACES_lag; 
SHOW_CONFIGURATION -> INTERFACES_eth -> DESCRIPTION; 
SHOW_CONFIGURATION -> INTERFACES_vlan -> DESCRIPTION; 
SHOW_CONFIGURATION -> INTERFACES_lag -> DESCRIPTION; 
SHOW_CONFIGURATION -> INTERFACES_eth -> IPV4; 
SHOW_CONFIGURATION -> INTERFACES_vlan -> IPV4; 
SHOW_CONFIGURATION -> INTERFACES_lag -> IPV4; 
} 

結果: 私はコード持ってresult_pic

をしかし、私は、この画像のように、同じサブコマンドノードでマージすることなく、それを描画する必要があります:what i want to see。 私のグラフをどうやって描くことができるか教えてください。

答えて

2

デフォルトでは、graphvizはラベルとしてノードIDを使用します。異なるノードが同じラベルを持つ必要がある場合は、ラベルを明示的に定義する必要があります。

また、最初にすべてのノードを定義し、それらのノード間のエッジを定義すると便利な場合があります。この例では

strict digraph 2 { 
rankdir=LR; 
//Nodes 
cfg [label="SHOW_CONFIGURATION"]; 
eth [label="INTERFACES_eth"]; 
vlan [label="INTERFACES_vlan"]; 
lag [label="INTERFACES_lag"]; 
node[label="DESCRIPTION"]; 
d1;d2;d3; 
node[label="IPV4"]; 
i1;i2;i3; 

// Edges 
cfg -> {eth; vlan; lag;} 
eth -> {d1; i1;} 
vlan -> {d2; i2;} 
lag -> {d3; i3} 
} 

、命令node[...]は、この命令の後に、すべての新しいノードのデフォルト属性を定義します。

+0

ありがとうございます!..... –

関連する問題