2010-03-18 105 views
11

我想繪製一個圖表顯示搜索前綴使用twopi。我有一個簡單的輸入文件,並正在此輸出:使用graphviz twopi控制佈局

alt text http://www.freeimagehosting.net/uploads/th.ac6cd51528.png (full image)

這裏是輸入文件:

twopi -os1.png -Tpng s1.dot 

我:

digraph search { 

// ordering=out; 
// color=blue; 
// rank=same; 
// overlap=scale; 
rankdir=LR; 
root=root; 
ranksep=1.25; 
overlap=true; 

"root"; 

a [color=none,fontsize=12]; 
b [color=none,fontsize=12]; 
c [color=none,fontsize=12]; 
d [color=none,fontsize=12]; 
e [color=none,fontsize=12]; 
f [color=none,fontsize=12]; 
#g [color=none,fontsize=12]; 
h [color=none,fontsize=12]; 
i [color=none,fontsize=12]; 
j [color=none,fontsize=12]; 
k [color=none,fontsize=12]; 
l [color=none,fontsize=12]; 
m [color=none,fontsize=12]; 
n [color=none,fontsize=12]; 
o [color=none,fontsize=12]; 
p [color=none,fontsize=12]; 
q [color=none,fontsize=12]; 
r [color=none,fontsize=12]; 
s [color=none,fontsize=12]; 
t [color=none,fontsize=12]; 
u [color=none,fontsize=12]; 
v [color=none,fontsize=12]; 
w [color=none,fontsize=12]; 
x [color=none,fontsize=12]; 
y [color=none,fontsize=12]; 

#ga [color=none,fontsize=12]; 
gb [color=none,fontsize=12]; 
gc [color=none,fontsize=12]; 
gd [color=none,fontsize=12]; 
ge [color=none,fontsize=12]; 
gf [color=none,fontsize=12]; 
gg [color=none,fontsize=12]; 
gh [color=none,fontsize=12]; 
gi [color=none,fontsize=12]; 
gj [color=none,fontsize=12]; 
gk [color=none,fontsize=12]; 
gl [color=none,fontsize=12]; 
gm [color=none,fontsize=12]; 
gn [color=none,fontsize=12]; 
go [color=none,fontsize=12]; 
gp [color=none,fontsize=12]; 
gq [color=none,fontsize=12]; 
gr [color=none,fontsize=12]; 
gs [color=none,fontsize=12]; 
gt [color=none,fontsize=12]; 
gu [color=none,fontsize=12]; 
gv [color=none,fontsize=12]; 
gw [color=none,fontsize=12]; 
gx [color=none,fontsize=12]; 
gy [color=none,fontsize=12]; 

gaa [color=none,fontsize=12]; 
gab [color=none,fontsize=12]; 
gac [color=none,fontsize=12]; 
gad [color=none,fontsize=12]; 
gae [color=none,fontsize=12]; 
gaf [color=none,fontsize=12]; 
gag [color=none,fontsize=12]; 
gah [color=none,fontsize=12]; 
gai [color=none,fontsize=12]; 
gaj [color=none,fontsize=12]; 
gak [color=none,fontsize=12]; 
gal [color=none,fontsize=12]; 
gam [color=none,fontsize=12]; 
gan [color=none,fontsize=12]; 
gao [color=none,fontsize=12]; 
gap [color=none,fontsize=12]; 
gaq [color=none,fontsize=12]; 
#gaz [color=none,fontsize=12]; 
gas [color=none,fontsize=12]; 
gat [color=none,fontsize=12]; 
gau [color=none,fontsize=12]; 
gav [color=none,fontsize=12]; 
gaw [color=none,fontsize=12]; 
gax [color=none,fontsize=12]; 
gay [color=none,fontsize=12]; 

gaza [color=none,fontsize=12]; 
gazb [color=none,fontsize=12]; 
gazc [color=none,fontsize=12]; 
gazd [color=none,fontsize=12]; 
gaze [color=none,fontsize=12]; 
#gazf [color=none,fontsize=12]; 
gazg [color=none,fontsize=12]; 
gazh [color=none,fontsize=12]; 
gazi [color=none,fontsize=12]; 
gazj [color=none,fontsize=12]; 
gazk [color=none,fontsize=12]; 
gazl [color=none,fontsize=12]; 
gazm [color=none,fontsize=12]; 
gazn [color=none,fontsize=12]; 
gazo [color=none,fontsize=12]; 
gazp [color=none,fontsize=12]; 
gazq [color=none,fontsize=12]; 
gazr [color=none,fontsize=12]; 
gazs [color=none,fontsize=12]; 
gazt [color=none,fontsize=12]; 
gazu [color=none,fontsize=12]; 
gazv [color=none,fontsize=12]; 
gazw [color=none,fontsize=12]; 
gazx [color=none,fontsize=12]; 
gazy [color=none,fontsize=12]; 

root -> a [minlen=2]; 
root -> b [minlen=2]; 
root -> c [minlen=2]; 
root -> d [minlen=2]; 
root -> e [minlen=2]; 
root -> f [minlen=2]; 
root -> g [minlen=2]; 
root -> h [minlen=2]; 
root -> i [minlen=2]; 
root -> j [minlen=2]; 
root -> k [minlen=2]; 
root -> l [minlen=2]; 
root -> m [minlen=2]; 
root -> n [minlen=2]; 
root -> o [minlen=2]; 
root -> p [minlen=2]; 
root -> q [minlen=2]; 
root -> r [minlen=2]; 
root -> s [minlen=20]; 
root -> t [minlen=2]; 
root -> u [minlen=2]; 
root -> v [minlen=2]; 
root -> w [minlen=2]; 
root -> x [minlen=2]; 
root -> y [minlen=2]; 
root -> 0 [minlen=2]; 
root -> 1 [minlen=2]; 
root -> 2 [minlen=2]; 
root -> 3 [minlen=2]; 
root -> 4 [minlen=2]; 
root -> 5 [minlen=2]; 
root -> 6 [minlen=2]; 
root -> 7 [minlen=2]; 
root -> 8 [minlen=2]; 
root -> 9 [minlen=2]; 
root -> "." [minlen=2]; 

g -> ga ; 
g -> gb ; 
g -> gc ; 
g -> gd ; 
g -> ge ; 
g -> gf ; 
g -> gg ; 
g -> gh ; 
g -> gi ; 
g -> gj ; 
g -> gk ; 
g -> gl ; 
g -> gm ; 
g -> gn ; 
g -> go ; 
g -> gp ; 
g -> gq ; 
g -> gr ; 
g -> gs ; 
g -> gt ; 
g -> gu ; 
g -> gv ; 
g -> gw ; 
g -> gx ; 
g -> gy ; 

ga -> gaa ; 
ga -> gab ; 
ga -> gac ; 
ga -> gad ; 
ga -> gae ; 
ga -> gaf ; 
ga -> gag ; 
ga -> gah ; 
ga -> gai ; 
ga -> gaj ; 
ga -> gak ; 
ga -> gal ; 
ga -> gam ; 
ga -> gan ; 
ga -> gao ; 
ga -> gap ; 
ga -> gaq ; 
ga -> gaz ; 
ga -> gas ; 
ga -> gat ; 
ga -> gau ; 
ga -> gav ; 
ga -> gaw ; 
ga -> gax ; 
ga -> gay ; 

gaz -> gaza ; 
gaz -> gazb ; 
gaz -> gazc ; 
gaz -> gazd ; 
gaz -> gaze ; 
gaz -> gazf ; 
gaz -> gazg ; 
gaz -> gazh ; 
gaz -> gazi ; 
gaz -> gazj ; 
gaz -> gazk ; 
gaz -> gazl ; 
gaz -> gazm ; 
gaz -> gazn ; 
gaz -> gazo ; 
gaz -> gazp ; 
gaz -> gazq ; 
gaz -> gazr ; 
gaz -> gazs ; 
gaz -> gazt ; 
gaz -> gazu ; 
gaz -> gazv ; 
gaz -> gazw ; 
gaz -> gazx ; 
gaz -> gazy ; 

gazo -> "Blue Tuesday" ; 
"Blue Tuesday" [ fontsize=10]; 

// Layout engines: circo dot fdp neato nop nop1 nop2 osage patchwork sfdp twopi 

} 

該輸出與產生在這裏張貼,因爲打印輸出是相當可怕的。所有掛在「gaz」上的節點重疊;我試過指定nodesep,它簡單地被忽略。我希望看到從根部到單個字母的線條進一步分開,但我再次無法控制這些。

這似乎是twopi中的一個錯誤。文件說它應該明確地遵循這些指令,但它似乎並不如此。

我的問題:

  1. 有沒有什麼辦法讓twopi表現?
  2. 失敗了,是否有更好的佈局引擎使用?

謝謝。

回答

17

我發現twopi是所有graphviz佈局引擎中最難處理的。

我對原始點文件做了一些小的修改。呈現的圖形如下所示。

這裏是進行比較:

圖表屬性

  • 大小= 「7.75,10.25」; //確保整個圖形適合單個8.5 x 11頁;

  • orientation =「landscape」;

  • ranksep = 3.0; nodesep = 2.0;

  • 已刪除:「root = root」;和 「重疊=真」

邊緣屬性:

  • 我設置邊緣權重等於0.1 對於所有邊緣:[重量= 0。1]

由90%的所有邊緣,從而減少邊緣重量具有增加邊緣的長度(或更精確地放寬對邊緣長度約束)的淨效果;顯然,這有助於節點「扇出」。這樣做也會增加「g」和「root」之間的距離,給「root」的子節點更多空間。

我還調整了一些純粹的審美屬性 - 沒有上造成任何影響,但對我來說,似乎當你需要畫一個單一頁面上即使是中等稠密圖無關緊要:

圖屬性:

fontname =「Helvetica」; 字號= 13

節點屬性:

「根」[顏色= 「goldenrod4」,形狀= 「菱形」,風格= 「填充」]

「G」[顏色=」 lightsteelblue2" ,形狀= 「菱形」,風格= 「填充」]

「GA」[顏色= 「深橙」,形狀= 「菱形」,風格= 「填充」]

「暖氣」[色=「bisque4」,shape =「diamond」,style =「filled」]

邊緣屬性:

[arrowsize = 0.4,penwidth = 1.2] alt text

+0

感謝。 twopi顯然是越野車。如果還有另一種選擇,我會選擇它。有什麼建議麼? – vy32 2010-03-23 04:25:44

+2

好吧......我不會想到用twopi來繪製這樣的圖表,但看到它,我認爲你有正確的想法。 FWIW,對於你的圖表來說,我的第一個想法是使用「circo」引擎(也適用於graphviz系列 - 應該在你的版本中)。 – doug 2010-03-23 05:00:45

+0

我試過'circo',對結果不滿意。但是,謝謝! – vy32 2010-04-03 00:15:59