将.dot文件导入为子图

A S*_* Sz 14 dot graphviz

有没有 - 通过语言功能或通过预先准备 - 可以将外部.dot文件作为子图包含到另一个中?

我正在处理一个相对较大的图表,虽然手动维护,但没有生成.

能够定义一些是很方便的

subgraph01.dot:

digraph subgraph01 {
 /* lot of nodes and edges */
}
Run Code Online (Sandbox Code Playgroud)

subgraph02.dot:

digraph subgraph02 {
 /* lot of nodes and edges */
}
Run Code Online (Sandbox Code Playgroud)

然后做一些像graph.dot:

digraph BigGraph {
    import subgraph01;
    import subgraph02;
    A -> subgraph01.Node1
    A -> subgraph02.Node1
    subgraph01.Node10 -> subgraph02.Node99
    /* etc. */
}
Run Code Online (Sandbox Code Playgroud)

有办法吗?

Sim*_*mon 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. */
}
Run Code Online (Sandbox Code Playgroud)

......跑步:

$ m4 BigGraph.m4 
Run Code Online (Sandbox Code Playgroud)

...产生:

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. */
}
Run Code Online (Sandbox Code Playgroud)

另一个可能允许更复杂方法的选择是使用 GraphViz中的gvpr.我尝试创建一个示例来执行此操作gvpr,但是我没有成功,因此我建议只在需要图形感知方法而不是使用简单方法时尝试它m4.