2013-03-03 87 views
18

我想強制點僅顯示節點之間的垂直或水平邊緣。用點強制正交(垂直或水平)邊緣

我找到了一個職位Family tree layout with Dot/GraphViz類似的要求,但我不處理的樹木,所以我希望有不插入額外的節點的解決方案......

如果我建立如下圖:

 
digraph G { 

    splines=ortho 

    A [ shape=box ] 
    B [ shape=box ] 
    C [ shape=box ] 
    D [ shape=box ] 

    A -> B 
    A -> C 

    B -> D 
    C -> D 

} 

我所得到的是這樣的:

enter image description here

不過,我想這樣的一個圖表:

enter image description here

我怎樣才能得到這樣的渲染?

編輯:「splines」屬性似乎不像預期的那樣工作...有什麼我做錯了嗎?

回答

23

您的語法看起來正確。當我運行它,我得到正交邊緣路由(的排序):

enter image description here

您有哪些版本?

我問,因爲正交邊緣路由僅適用於2010年9月28日及更新的Graphviz版本。並非所有系統都包含更新的版本。在我的系統上,我必須download並手動安裝Graphviz以獲得比2.26.3更新的版本(即2010年1月26日起)。

假設你的實際的圖形包含超過4個節點,如果你想行有一個彎道,你不想增加額外的(無形)節點,你應該嘗試與 圖表玩耍nodesep屬性。查看下面的代碼和圖片。

digraph G { 

    graph [splines=ortho, nodesep=1] 
    node [shape=record] 

    A -> {B, C} -> D 
} 

enter image description here