是否有 - 通过语言功能或通过预先准备 - 可以将外部.dot文件作为子图包含到另一个文件中?
我正在开发一个相对较大的图表,虽然是手动维护,但未生成。
能够定义一些
会很方便 subgraph01.dot
:
digraph subgraph01 {
/* lot of nodes and edges */
}
subgraph02.dot
:
digraph subgraph02 {
/* lot of nodes and edges */
}
然后执行graph.dot
:
digraph BigGraph {
import subgraph01;
import subgraph02;
A -> subgraph01.Node1
A -> subgraph02.Node1
subgraph01.Node10 -> subgraph02.Node99
/* etc. */
}
有办法吗?
答案 0 :(得分:11)
我立即想到两个选择。一种是使用宏处理器,例如m4。鉴于BigGraph.m4
:
digraph BigGraph {
define(`digraph',`subgraph')
include(`subgraph01.dot')
include(`subgraph02.dot')
A -> subgraph01.Node1
A -> subgraph02.Node1
subgraph.Node10 -> subgraph.Node99
/* etc. */
}
......跑步:
$ m4 BigGraph.m4
...生产:
digraph BigGraph {
subgraph subgraph01 {
/* lot of nodes and edges */
}
subgraph subgraph02 {
/* lot of nodes and edges */
}
A -> subgraph01.Node1
A -> subgraph02.Node1
subgraph.Node10 -> subgraph.Node99
/* etc. */
}
可能允许采用更复杂方法的另一种选择是使用
来自GraphViz的gvpr。我试图创建一个使用gvpr
执行此操作的示例,但是我没有成功,所以我建议只在需要图形感知方法而不是使用m4
的简单方法时尝试。