强制显式创建节点(dot,graphviz)

时间:2017-05-18 20:21:13

标签: graphviz dot

我正在开发一个包含大量节点的大图,这些节点以点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;
  }
}

1 个答案:

答案 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)