如何禁止节点在graphviz中合并? [英] How to prohibit nodes merge in graphviz?
问题描述
我使用graphviz绘制命令树.默认情况下,它合并具有相同名称的节点.如何禁止呢? 例子: 我有一个代码:
I use graphviz to draw commands tree. By default it's merging nodes with same name. How to prohibit this? Example: I have a code:
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
绘制的结果:
Result of drawing with command dot -Tsvg -o cli_tree.svg SHOW_CONFIGURATION.dot
:
但是我需要在不合并相同子命令节点的情况下绘制它,如下图所示:
But i need to draw it without merging of same subcommand nodes, like in this image:
.
请帮助我了解如何绘制图形.
Please, help me to know how can i draw my graph like so.
推荐答案
默认情况下,graphviz使用节点ID作为标签.如果不同的节点需要具有相同的标签,则必须明确定义标签.
By default, graphviz uses the node id as label. If distinct nodes need to have the same label, the label has to be defined explicitely.
我还发现有时首先定义所有节点,然后定义这些节点之间的边缘有时很有用.
I also find it sometimes useful to define first all nodes, then the edges between those nodes.
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[...]
为该指令之后的所有新节点定义了默认属性.
In this example, the instruction node[...]
defines default attributes for all new nodes after this instruction.
这篇关于如何禁止节点在graphviz中合并?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!