2010-04-16 151 views
18

我半路請參閱編輯Graphviz的DOT安排圈節點,佈局過於「緊湊」

確定這裏是我的問題,我產生一個Python模塊的圖形,包括所有的文件與他們的功能/方法/類。

我想要安排它,節點圍繞它們的父節點聚集在一起,目前所有東西都在一個巨大的水平行上,這使得東西寬度大於50k像素,並且讓svg轉換器失效(只渲染關於一半的圖)。

我經歷了docs,但找不到任何似乎有用的技巧。

所以問題是:
有沒有一種簡單的方法來做到這一點,還是我必須自己佈局整個事情? :/

編輯:
由於安卓評論我已經得到了正確的佈局,唯一的問題是現在這是一個有點「緊湊型」 ......所以,現在的問題是,如何解決這一問題?

Test

+4

你試過用「NEATO」佈局?它可能會給你想要的結果。 – Andrew 2010-04-16 00:15:59

+0

剛剛嘗試通過命令行開關-K,有點作品看到我的編輯。 – 2010-04-16 00:35:15

+3

有點晚,但是當你用neato得到這個重疊的佈局時,只需設置「overlap = false」。 – pablasso 2012-01-10 17:54:56

回答

31

我提到所有影響你當前佈局的最顯著的參數,然後提出這些參數值。不過,我懷疑你可以通過應用這些建議來獲得你想要的佈局。

  • 減小邊緣重量,例如,[重量= 0.5]。這將使 邊緣更長,導致您目前在 圖中看到的緊密 羣集「扇出」。

  • 擺脫節點邊界,node_A [color = none;形狀=明文]; 特別是對於橢圓形節點, 節點空間的大部分是'未使用'(即,未使用 來顯示節點標籤)。

  • 明確設置的字體大小 (節點邊框 放大,使得它們包圍 節點文本,這意味着該字體 大小和文本的量對於給定的 節點具有節點對其尺寸 有顯着影響); [fontsize = 11]應該足夠清晰,但也可以減少 '混亂'的外觀( 默認大小爲14)。

  • 增加 節點之間的最小間隔,通過'nodesep';例如,nodesep = 2.0;這將 直接解決您的異議 您的圖形是「太 緊湊」。 ('nodesep'和'ranksep' 可能會影響點的繪製方式 對於 節點,邊或圖的繪製數量要多於其他參數。在你的情況下, 它看起來像你只有兩個隊列 節點; 「ranksep」設置的不同 行列節點之間的最小距離 - 它看起來像所有的包括你的圖形中的節點 都是 同一職級(除了少數頂級的中心 節點)。

  • 明確設置總圖形大小,例如 大小=「7.75,10.25」(確保您 圖表符合一個8.5×11頁和 ,它佔據了整個空間上)

  • 和一個純粹的審美建議 ,最多隻會幫助你的 圖出現較少凌亂: 默認fontcolor兩邊和 節點是黑色的。在圖形中的大多數 油墨是由這兩個 結構(特別是如果你 刪除該節點的邊界),所以我會 例如設置任何節點 (文本)FONTCOLOR或邊緣 FONTCOLOR爲「藍」幫助眼睛 區分兩組圖 結構。

+1

事實上,我在這裏報告了一個非常類似的問題,並且使用'ranksep'是扇出圖的關鍵配置。謝謝! – 2013-01-30 16:26:26

+0

你能告訴我這個文件嗎?使用工作代碼樣本? – aitchnyu 2015-07-09 15:06:25

6

如果它太緊湊,你會想弄亂邊緣長度。你必須根據圖形佈局幾個選項:

  1. 如果你的佈局SFDP或FDP,捏捏財產ķ。默認值是0.3。
  2. 對於neato(或fdp),調整邊緣屬性len。 neato默認值爲1.0,fdp默認值爲0.3。
  3. 對於點,您可以使用邊緣屬性minlen這是最小邊緣長度。默認值爲1.

您可能還想混淆圖屬性模型它確定聚類行爲。具體來說,請嘗試子集。我相信這會爲你LENhttp://www.graphviz.org/doc/info/attrs.html#d:model

此外,您還可以使用縮放技術去除重疊一起:http://www.graphviz.org/doc/info/attrs.html#d:overlap

+0

嗯.. minlen似乎不工作.... – Pacerier 2014-07-16 22:40:39