Graphviz中簇之间的直边

时间:2010-06-09 14:31:25

标签: graphviz

我正试图在Graphviz中的群集之间有一个边缘,边缘不会影响排名。

看起来很好:

digraph {
  subgraph clusterX {
    A    
    B
  }

  subgraph clusterY {
    C
    D
  } 

  A -> B
  B -> C [constraint=false]
  C -> D
}

然而,当我向C -> D边添加标签时,B -> C边缘试图绕过所述标签(看起来很难看)。

digraph {
  subgraph clusterX {
    A    
    B
  }

  subgraph clusterY {
    C
    D
  } 

  A -> B
  B -> C [constraint=false]
  C -> D [label=yadda]
}

知道如何保持BC的优势吗?

2 个答案:

答案 0 :(得分:33)

实现此目的的最简单方法是将splines=false添加到点文件中 - 这会强制渲染边缘为直线:

digraph {
 splines=false;
 subgraph clusterX {
    A;
    B;
 }

 subgraph clusterY {
    C;
    D;
 } 

 A -> B;
 B -> C [constraint=false];
 C -> D [label=yadda];
}

输出:

graphviz output

答案 1 :(得分:3)

您可以使用此版本:

digraph G { 
  subgraph cluster_X {
    A [ pos = "0,1!" ]; 
    B [ pos = "0,0!" ];
  } 
  subgraph cluster_Y {
    C [ pos = "1,1!" ]; 
    D [ pos = "1,0!" ];
  } 
  A -> B
  B -> C[label="yadda"]
  C -> D;
}

然后你使用neato(不是点)

neato -Tpng -oyadda.png yadda.dot

结果是:

enter image description here