2011-05-28 28 views
1

在問我之前,我試圖搜索我的問題的答案,我找不到。 我的問題是關於改變點圖中的邊緣方向。 Rankdir是'LR',但在圖的某個部分,我想使用'TB'。讓我舉個例子。如何在點圖中調整邊的方向?

 
digraph G { 
    rankdir=LR; 
    size="7,5"; 
    browser->ui_thread; 
    browser->db_thread; 
    browser->webkit_thread; 
    browser->cache_thread; 
    browser->file_thread; 
    browser->io_thread; 
    io_thread[style=filled]; 
    cache_thread[style=filled]; 
    ui_thread->thread[label=inherit]; 
    ui_thread->messageloop[style=dotted]; 
    db_thread->messageloop[style=dotted]; 
    webkit_thread->messageloop[style=dotted]; 
    cache_thread->messageloop[style=dotted]; 
    file_thread->messageloop[style=dotted]; 
    io_thread->messageloop[style=dotted]; 
} 

它給出了圖這樣 output graph

但是,這不是我想要的。 我想要下面的圖像。 「線程」垂直位於「ui_thread」之上。 enter image description here 你可能會認爲它可以很容易地解決使用「rankdir =相同」與「線程」和「ui_thread」。 我確定已經嘗試過。但我失敗了。 「線程」總是低於「ui_thread」。

感謝,

回答

2

不幸的是,圖形的方向只能指定一次,並且在該方向上的整個圖形住宿。在這種情況下,您通常可以使用constraint=false和不可見邊的組合來獲得所需效果,以強制進行某些排序。

該代碼會產生第二個圖像:

digraph G { 
    rankdir=LR; 
    size="7,5"; 
    browser->thread[style=invis]; 
    browser->ui_thread; 
    browser->db_thread; 
    browser->webkit_thread; 
    browser->cache_thread; 
    browser->file_thread; 
    browser->io_thread; 
    io_thread[style=filled]; 
    cache_thread[style=filled]; 
    ui_thread->thread[label=inherit constraint=false]; 
    ui_thread->messageloop[style=dotted]; 
    db_thread->messageloop[style=dotted]; 
    webkit_thread->messageloop[style=dotted]; 
    cache_thread->messageloop[style=dotted]; 
    file_thread->messageloop[style=dotted]; 
    io_thread->messageloop[style=dotted]; 
} 
+0

真正創造性的解決方案 – nirvana9235 2011-05-29 05:21:13

相關問題