Graphviz子图无法显示


68

我正在尝试用点创建两个子图的图。代码如下:

digraph G {
        subgraph step1 {
                style=filled;
                node [label="Compiler"] step1_Compiler;
                node [label="Maschine"] step1_Maschine;
                color=lightgrey;
        }

        subgraph step2 {
                style=filled;
                color=lightgrey;
                node [label="Interpretierer"] step2_Interpretierer;
                node [label="Maschine"] step2_Maschine;
                label="Virtuelle Maschine";
        }

        "Programm (Java)" -> step1_Compiler;
        step1_Compiler -> step1_Maschine;
        step1_Maschine -> "Bytecode";
        "Bytecode" -> step2_Interpretierer;
        step2_Interpretierer -> step2_Maschine;
        step2_Maschine -> "Ergebnis";
}

我得到的结果如下所示:

以上代码的结果

我希望在两个子图的周围都看到一个方框。我在这里想念什么?

Answers:


131

您必须在子图的名称前加上cluster

subgraph clusterstep1 {

subgraph clusterstep2 {

为了获得样式和标签。

graphiz文档中的“子图和聚类”部分

子图的第三个角色直接涉及某些布局引擎如何布置图。如果子图的名称以cluster开头,则Graphviz会将子图记为特殊的簇子图。如果支持,布局引擎将进行布局,以将属于群集的节点绘制在一起,并将群集的整个图形包含在边界矩形内。请注意,无论好坏,群集子图都不是DOT语言的一部分,而仅仅是某些布局引擎所遵循的语法约定。


那么子图和子图簇*都将在布局算法下产生视觉分组吗?
克里斯,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.