2009-11-19 627 views
3

我使用Graphviz(使用neato編譯)創建圖形。該圖包含很多重疊的節點,這些節點非常好。然而,我更喜歡總是在其他小節點之上的一組大節點 - 儘管我更喜歡首先在圖中定義大節點(這使得它們被繪製在最底部)。Graphviz中的節點分層

任何方式我可以強制這個?

編輯:
這裏有一個小例子,只是爲了澄清我的意思:

graph G { 
    node [style=filled,fillcolor=black]; 
    BigNode [fillcolor=skyblue,shape=Msquare]; 

    node [style=filled,fillcolor=red,shape=circle]; 
    edge [style=invis] 
    1 -- BigNode[len=0.5]; 
    2 -- BigNode[len=1]; 
} 

我想爲BigNode要塗在節點1

回答

3

我沒有找到一個(在某種程度上)解決方案...
我發現,如果你推遲節點定義到最後,即使你定義了這個節點前面的邊緣,將塗頂最。
我意識到這與我之前定義的矛盾,但這是在這種情況下唯一可能的解決方案,而且這是我最終必須使用的解決方案。

在我的簡單例子,你可以這樣做:

graph G { 
    node[style=filled,fillcolor=black]; 
    // Definition of BigNode moved to the end of the file 
    /*BigNode [fillcolor=skyblue,shape=Msquare];*/ 

    node[style=filled,fillcolor=red,shape=circle]; 
    edge[style=invis] 
    1 -- BigNode[len=0.5]; 
    2 -- BigNode[len=1]; 

    // Defined after already defining edges for BigNode 
    BigNode [fillcolor=skyblue,shape=Msquare]; 
} 

在結果圖,BigNode塗黑節點1

2

我不認爲這是可能的。官方neato guide討論了第6頁到第9頁上的節點分層。看起來您可以做的最多的是調整邊緣長度並固定節點:實際上,您無法控制節點之間的層疊方式。

+0

對於確切的問題定義的上方,可惜你是對的,沒有解。 – Dana 2009-11-25 07:42:08