2011-09-23 59 views
5

使用Ruby-graphviz的,我創建了一個圖表,看起來像這樣(境加入到強調渲染邊界):強制兩個節點在Graphviz中佔據相同的等級?

Before

我真正想要的是A和K可在一起排隊頂部(或左側,如果rankdir =「LR」)。所以我增加了一個無形的節點(稱之爲X),並增加從X隱形邊緣A和K.這裏就是我的了:

After

X,XA和XK沒有任何標籤和樣式設置爲'invis'。 X將height,width和margin設置爲0,並將fixedsize設置爲true。 XA和XK將minlen,len和penwidth設置爲0.

但是頂部仍然有空的空間。有什麼方法可以擺脫它,在事實之後缺乏裁剪?

回答

3

您不需要不可見的節點來實現這一點。

這是點語法,迫使同等級爲兩個節點:

{rank=same; A; K;} 

這就是所謂的subgraph

我不知道紅寶石graphviz的,我不知道如何創建一個子 - 但有一個example on github

c2 = g.subgraph { |c| 
    c[:rank => "same"] 
    c.mysite[:label => "\nexample.com\n ", :shape => "component", :fontname => "Arial"] 
    c.dotgraph[:label => "\ndotgraph.net\n ", :shape => "component", :fontname => "Arial"] 
} 
+0

它採取了一些額外的扯皮讓上述方案的工作,但是子圖原來是關鍵。謝謝! – mbklein

+0

解答OP問題而不回答他的問題的答案的一個很好的例子。我有「如何防止隱形節點佔用空間」的問題...... ;-) – DevSolar

+0

@DevSolar ...或解決初始問題的錯誤問題的示例:-)然而,可能是,恕我直言大多數情況下,如果有其他解決方案,最好不要使用隱形節點。但請繼續併發布有關您的特定問題的問題,有人可能會找到解決方案。 – marapet