2011-09-28 57 views
45

我想创建一个图中有两个子图的点。代码如下:Graphviz子图不可见

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"; 
} 

结果我得到如下所示:

Result of above code

我期望看到两个子图周围的框。我在这里错过了什么?

回答

93

你有集群前缀的子图名称:

subgraph clusterstep1 { 

subgraph clusterstep2 { 

,以获取其风格和标签。

graphiz documentation, section "Subgraphs and Clusters"

为子图的第三个作用,直接涉及到图形怎么会 某些布局引擎布局。 如果子图的名称从集群开始 ,则Graphviz将该子图记录为特殊集群 子图。如果支持,布局引擎将执行布局,以便属于该集群的节点被绘制在一起,并且整个 图形包含在边界矩形内。注 ,对于好的和坏的,聚类子图不是DOT 语言的一部分,但是仅仅是布局引擎的某些 遵守的语法惯例。

+0

那么子图和子图簇*都会在布局算法下产生一个可视化分组吗? – Chris

+0

非常感谢你。 – sjas