是否有可能--通过语言特性或前置器--将外部.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. */
}有办法吗?
发布于 2014-10-10 01:00:22
我马上想到了两个选择。一种是使用宏处理器,例如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的GraphViz。然而,我尝试用gvpr创建一个示例来实现这一点,但是我没有成功,所以我建议只在需要使用图形感知方法时才尝试它,而不是使用m4的简单方法。
https://stackoverflow.com/questions/26239194
复制相似问题