嵌套的graphviz树?

嵌套的graphviz树?,graphviz,Graphviz,TL;DR:在graphviz中是否有一些简短的符号用于创建树,而不需要重新键入节点名 我正在尝试用graphviz的twopi工具创建思维导图。为了避免一遍又一遍地重写相同的标签或使用晦涩的速记,我尝试使用嵌套大括号 基本上,我希望这里的两个子图具有相同的结构: digraph example { subgraph AA { root -> {a b c} a -> {

TL;DR:在graphviz中是否有一些简短的符号用于创建树,而不需要重新键入节点名

我正在尝试用graphviz的twopi工具创建思维导图。为了避免一遍又一遍地重写相同的标签或使用晦涩的速记,我尝试使用嵌套大括号

基本上,我希望这里的两个子图具有相同的结构:

digraph example {            
        subgraph AA {     
                root -> {a b c}
                a -> {a1 a2 a3}
                b -> {b1 b2 b3}
                c -> {c1 c2 c3}
        }
        subgraph XX {
                _root -> {
                        _a -> { _a1 _a2 _a3 }
                        _b -> { _b1 _b2 _b3 }
                        _c -> { _c1 _c2 _c3 }
                }
        }
}
但是,第一个具有我想要的层次结构,而第二个具有来自根节点的意外连接。使用twopi-Tpng example.dot-o example.png编译:

第一种形式可以使用如此短的符号名,但当标签包含实际文本时,文本文件很快就会变得难以读取

第二种形式会有所帮助,但显然我理解在graphviz中分组的效果


是否有一些语法可以避免重复我在子图XX中尝试的节点名称?

我很确定没有。发件人:

edge语句允许在edge操作符的左侧和右侧都有子图。发生这种情况时,将从左侧的每个节点到右侧的每个节点创建一条边

这意味着您必须重复某些操作,以避免从分支(包括树中的根)到该分支上的所有对象都有边。我通常会重复最容易写的节点

我不认为这会让你更快乐,但这里有一种方法,只重复根节点:

var dotSrc=` 有向图示例{ 子图AA{ 根->{abc} a->{a1 a2 a3} b->{b1 b2 b3} c->{c1 c2 c3} } 子图XX{ _根->\u a->{u a1\u a2\u a3} _根->\u b->{u b1\u b2\u b3} _根->\u c->{u c1\u c2\u c3} } } `; d3.selectgraph.graphviz .enginetwopi .renderDotdotSrc;
我很确定没有。发件人:

edge语句允许在edge操作符的左侧和右侧都有子图。发生这种情况时,将从左侧的每个节点到右侧的每个节点创建一条边

这意味着您必须重复某些操作,以避免从分支(包括树中的根)到该分支上的所有对象都有边。我通常会重复最容易写的节点

我不认为这会让你更快乐,但这里有一种方法,只重复根节点:

var dotSrc=` 有向图示例{ 子图AA{ 根->{abc} a->{a1 a2 a3} b->{b1 b2 b3} c->{c1 c2 c3} } 子图XX{ _根->\u a->{u a1\u a2\u a3} _根->\u b->{u b1\u b2\u b3} _根->\u c->{u c1\u c2\u c3} } } `; d3.selectgraph.graphviz .enginetwopi .renderDotdotSrc;