2010-06-09 302 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