2017-02-26 31 views
2

我有我創造,我希望出現在一個特定的順序子簇點文件,讓我們說我有這樣的:如何在使用點時對子圖簇進行排序?

digraph G { 
    splines=true; 
    sep="+25,25"; 
    overlap=scalexy; 
    nodesep=0.6; 
    subgraph cluster_2 { 
     label="ADD_MORE_PROBLEMS"; 
     subgraph cluster_3 { 
      label="pattern"; 
      N1 [label="problem"]; 
     } 
     subgraph cluster_4 { 
      label="replacement"; 
      N2 [label="problem"]; 
      N3 [label="problem"]; 
     } 
    } 
} 

它創建:

output from dot

怎麼辦我確保「模式」出現在「替換」的左側(我可能有任意數量的子圖)。

+0

只是澄清一點,在文件中有幾個頂級集羣,而那些實際上是按照預期從左到右顯示的。 –

+1

顛倒你的內部集羣的順序似乎給你想要的數字。更一般地說,子圖似乎首先出現在代碼中出現的左側的右側。 – user20650

+1

謝謝。最終我也想要嵌套的子圖和事情開始失控。我結束了渲染每個子圖,然後按照正確的順序合成單個圖像。 –

回答

0

我不能給和回答,但可以提供一些澄清。強制佈局的常用方法是引入隱藏邊。在這種情況下,它不起作用。

如果沒有嵌套羣集,您可以使用rank=same強制連接邊到同一級別。然後,一個看不見的邊N1 -> N2 [style = invis]會強制節點進入正確的順序。

但是,使用rank約束節點會破壞集羣成員資格並阻止該方案工作。

修改的圖顯示結果。可能沒有一個通用的解決方案。

digraph G { 
    splines=true; 
    sep="+25,25"; 
    overlap=scalexy; 
    nodesep=0.6; 
    subgraph cluster_2 { 
     label="ADD_MORE_PROBLEMS"; 
     subgraph cluster_3 { 
      label="pattern"; 
      N1 [label="problem 1"]; 
     } 
     subgraph cluster_4 { 
      label="replacement"; 
      N2 [label="problem 2"]; 
      N3 [label="problem 3"]; 
     } 
     // Introduce hidden edge (shown dashed) 
     N1 -> N2 [style = dashed]; 
     // Force nodes to remain at same rank 
     { rank = same; N1; N2; } 
    } 
} 

Constrained luster ordering

0

集羣是奇數情況下,只需在代碼排序,使差的大部分(如果不是全部相當)之一。如果我們簡單地對您的代碼重新排序,請執行以下操作:

digraph G { 
    splines=true; 
    sep="+25,25"; 
    overlap=scalexy; 
    nodesep=0.6; 
    subgraph cluster_2 { 
     label="ADD_MORE_PROBLEMS"; 
     subgraph cluster_4 { 
      label="replacement"; 
      N2 [label="problem"]; 
      N3 [label="problem"]; 
     } 
     subgraph cluster_3 { 
      label="pattern"; 
      N1 [label="problem"]; 
     } 
    } 
} 

使所有區別。 The "ADD_MORE_PROBLEMS" cluster contains both the "pattern" cluster and the "replacement" cluster. The "pattern" cluster is to the left of the "replacement" cluster. The "pattern" cluster contains a single node, labeled 'problem'. The "replacement" cluster contains two nodes, both labeled 'problem'.

現在,可能會失敗,在這種情況下,設置不可見邊是最常見的解決方案之一。

相關問題