如何禁止节点在 graphviz 中合并?
How to prohibit nodes merge in graphviz?
我使用 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;
}
使用命令绘制的结果dot -Tsvg -o cli_tree.svg SHOW_CONFIGURATION.dot
:
但我需要在不合并相同子命令节点的情况下绘制它,如下图所示:
.
请帮助我知道如何绘制我的图形。
默认情况下,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[...]
定义了此指令之后所有新节点的默认属性。
我使用 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;
}
使用命令绘制的结果dot -Tsvg -o cli_tree.svg SHOW_CONFIGURATION.dot
:
但我需要在不合并相同子命令节点的情况下绘制它,如下图所示:
请帮助我知道如何绘制我的图形。
默认情况下,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[...]
定义了此指令之后所有新节点的默认属性。