2009-10-12 35 views
18

我有這樣一個圖形文件:GraphViz - 當主圖是從上到下時如何讓子圖從左到右?

digraph { 
    "Step1" -> "Step2" -> "Step3"; 

    subgraph step2detail { 
     "Step2" -> "note1"; 
     "Step2" -> "note2"; 
     "Step2" -> "note3"; 
     "Step2" -> "note4"; 
     rankdir=TB 
    } 
} 

我希望子step2detail掛斷爲「第二步」的權利。

現在它看起來是這樣的:

enter image description here

我想第一步,第二步第三步和所有可垂直下對方和1列。

回答

5

由步進節點分組到集羣子圖,輸出如下:

digraph { 
    subgraph cluster_0 { 
     color=invis; 
     "Step1" -> "Step2" -> "Step3"; 
    } 

    subgraph cluster_1 { 
     color=invis; 
     "Step2" -> "note4"; 
     "Step2" -> "note3"; 
     "Step2" -> "note2"; 
     "Step2" -> "note1"; 
    } 
} 

http://i45.tinypic.com/2pyu7pk.jpg

color=invis刪除,否則將集羣

-3

使用周圍繪製的邊界命令:rankdir = LR;

digraph { 
rankdir=LR; 

    "Step1" -> "Step2" -> "Step3"; 

    subgraph step2detail { 
     "Step2" -> "note1"; 
     "Step2" -> "note2"; 
     "Step2" -> "note3"; 
     "Step2" -> "note4"; 
     rankdir=TB 
    } 

} 
+0

確定,但它看起來怪異的; step1 - > step2 - > step3不在同一個垂直位置 – 2010-01-19 15:08:35

+6

更改子圖的rankdir不會改變任何東西= \ – 2011-02-25 20:57:09

8

獲得您描述的圖的技巧是使用兩個子圖並從一個鏈接到另一個。 「細節」中的不可見邊緣是保持音符對齊的原因。

digraph { 
    rankdir="LR"; 

    subgraph steps { 
     rank="same"; 
     "Step1" -> "Step2" -> "Step3"; 
    } 

    subgraph details { 
     rank="same"; 
     edge[style="invisible",dir="none"]; 
     "note1" -> "note2" -> "note3" -> "note4"; 
    } 

    "Step2" -> "note1"; 
    "Step2" -> "note2"; 
    "Step2" -> "note3"; 
    "Step2" -> "note4"; 
} 
+2

我不知道原始提問者的想法是什麼,但是這給出了我想象的希望根據問題的描述 - 我認爲*會幫助我得到我想要的圖表。 :) – lindes 2012-06-13 12:45:48

4

這裏這麼簡單,因爲它得到 - 只需使用group屬性有graphviz的喜歡直 邊緣:

digraph { 
    node[group=a, fontname="Arial", fontsize=14]; 
    "Step1" -> "Step2" -> "Step3"; 

    node[group=""]; 
    "Step2" -> "note1"; 
    "Step2" -> "note2"; 
    "Step2" -> "note3"; 
    "Step2" -> "note4"; 
} 

graphviz output

相關問題