2011-09-28 3 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

Смежные вопросы