2017-03-04 59 views
0

我有一个图形,其中有3个子图放置在一个另一个上,我希望它们堆叠在一个顶部彼此(我不想要内容的方向子图改变)。强制GraphViz将子图对齐到一个下面

这个简单的例子:

digraph G { 
 
rankdir=TB; 
 
    subgraph cluster_lkg{ 
 
     subgraph cluster_sentence_1{ 
 
      "A1","A2","A3" 
 
      "A1" -> "A2" 
 
      "A1" -> "A3" 
 
     } 
 
     subgraph cluster_concepts_1{ 
 
      "B1","B2","B3" 
 
      "B1" -> "B2" 
 
      "B1" -> "B3" 
 
     } 
 
    } 
 
    subgraph cluster_fkgs{ 
 
      "C1","C2","C3" 
 
      "C1" -> "C2" 
 
      "C1" -> "C3" 
 
    } 
 

 
}

回答

0

您需要连接群集​​(或者更准确地说,集群中的节点),以使您的rankdir = TB有效。您可以通过使用不可见边这样做:

digraph G 
{ 
    rankdir=TB;  
    subgraph cluster_lkg 
    { 
     subgraph cluster_sentence_1 
     { 
      "A1","A2","A3" 
      "A1" -> "A2" 
      "A1" -> "A3" 
     } 
     subgraph cluster_concepts_1{ 
      "B1","B2","B3" 
      "B1" -> "B2" 
      "B1" -> "B3" 
     } 
     //A1 -> B1; 
    } 
    subgraph cluster_fkgs 
    { 
      "C1","C2","C3" 
      "C1" -> "C2" 
      "C1" -> "C3" 
    } 
    edge[ style = invis ]; 
    { A2 A3 } -> B1; 
    { B2 B3 } -> C1; 
} 

这将产生

enter image description here

节点C1错位 - 我想这来自于嵌套集群,但我有针对它的配方。无论如何希望它有帮助。