我正在开发一个包含大量节点的大图,这些节点以点dot -Tsvg graph.gv -o graph.svg
呈现。
为了保持概述I"明确"定义我在图表开头使用的所有节点。
现在我正在寻找一种方法来确保只有那些"明确"使用定义的节点,我不会隐含地""在边缘定义上创建节点(例如节点名称中的拼写错误)。
以下图表的渲染不应该起作用或警告我渲染一个"隐含的"使用了节点。
graph main_graph {
// explicit node definition
node1[style=filled, color=grey];
node2[style=filled, color=grey];
node3[style=filled, color=grey];
subgraph graph1 {
edge [color=red,penwidth=2]
node0 -- node2; //node0 implicitly defined
}
subgraph graph2 {
edge [color="blue",penwidth=2]
node2 -- node3;
node1 -- node3;
}
}
答案 0 :(得分:1)
官方支持不存在。
我使用了如下提示。
<强> 1。为隐式节点添加标记
graph main_graph {
// explicit node definition
node1[style=filled, color=grey];
node2[style=filled, color=grey];
node3[style=filled, color=grey];
// ---- lower boundary of explicit node definition ----
// default node attribute used for the detection of implicit node definition
node[label="IMPLICITLY-DEFINED"]
subgraph graph1 {
edge [color=red,penwidth=2]
node0 -- node2; //node0 implicitly defined
}
subgraph graph2 {
edge [color="blue",penwidth=2]
node2 -- node3;
node1 -- node3;
}
}
<强> 2。找到隐式定义的节点的标记
$ dot -Tplain graph.gv | awk '/IMPLICITLY-DEFINED/{print $2}'
node0
测试版本:macOS上的graphviz版本2.40.1(20161225.0304)