2010-06-09 294 views
18

我试图在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] 
} 

任何想法,我怎能不B边缘C直?

回答

26

的最简单方法实现这一点是添加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

2

您可以使用此版本:

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 

,其结果是:

alt text http://dl.dropbox.com/u/72629/yadda.png

+0

与NEATO我不明白簇箱了。对? – towi 2012-03-29 06:52:49