2016-08-01 73 views
2

我最近一直在用點來創建一個相當複雜的彙編程序的流程圖和調用圖。總而言之,這些工作非常完美,只需要一點點小心。有時候,當從一個集羣內的一個節點向另一個集羣中的另一個節點繪製一條線時,該線以某種方式加倍。點工具雙箭頭

我已經將我的問題的精簡版本添加爲代碼和點輸出圖像。

感謝

digraph G { 

    ratio=auto; node[fontsize=12]; label="boot"; newrank=true; 

    { 
    node[shape=plaintext]; 
    1->2[arrowsize=0.7,penwidth=0.1]; 
    } 

    Reset->uart_init[arrowsize=0.7, penwidth=0.1]; 

    { rank=same; "Reset"; "1"; } 
    { rank=same; "uart_init"; "2"; } 

    /* terminalhooks cluster */ 
    subgraph cluster42 { 
    fontsize=12; 
    label="terminalhooks.asm"; 
    labelloc=b; 
    type->emit[arrowsize=0.7,penwidth=0.1]; 
    emit[label=<emit<BR/><FONT POINT-SIZE="8">Terminal redirection hooks<BR/>für eventuelle Umleitungen</FONT>>]; 
    } 

    /* stm-terminal cluster */ 
    subgraph cluster43 { 
    fontsize=12; 
    label="stm-terminal.asm"; 
    labelloc=b; 
    emit->serial_emit->serial_qemit[arrowsize=0.7,penwidth=0.1]; 
    serial_emit[label=<serial_emit<BR/><FONT POINT-SIZE="8">Ausgabe Char via UART</FONT>>]; 
    serial_qemit[label=<serial_qemit<BR/><FONT POINT-SIZE="8">Prüft TXE (Transmit Buffer Empty)</FONT>>]; 
    } 
    { rank=same; "type"; "emit"; "serial_emit"; "serial_qemit"; } 
} 

dot graph

回答

1

我不知道爲什麼會發生,而是加入tailport=e似乎解決它:

emit->serial_emit->serial_qemit[tailport=e,arrowsize=0.7,penwidth=0.1]; 
#       -----^----- 

編輯:

看樣子newrank造成問題的原因。

digraph G { 
    newrank=true; 
    subgraph cluster42 { 
     0; 
     1; 
     0->1; 
    }  
    subgraph cluster43 { 
     2; 
     3; 
     1->2->3; 
    }  
    { rank=same; 0; 1; 2; 3; } 
} 

產品:

pic1

,但如果你刪除:

newrank=true; 

它產生:

pic2

編輯2:

在這個例子中,你可以使用rankdir=LR並刪除rank=same

digraph G { 
    rankdir=LR; 
    subgraph cluster42 { 
     0; 
     1; 
     0->1; 
    }  
    subgraph cluster43 { 
     2; 
     3; 
     1->2->3; 
    } 
} 

pic3

也許你可以跟你的複雜的圖形一樣了。

+0

出於某種原因,它適用於我的例子,雖然它擰了很多箭頭。但有一些其他圖添加tailport = e甚至增加了另一條線...... – Vinci

+0

@Vinci看看我的編輯。 'newrank'是否必要? –

+0

你是對的,newrank造成它。關鍵是我使用等級和簇來顯示彙編程序文件的封裝......如果不更新函數週圍的框,則不會顯示哪個解釋圖表的方式更難。 – Vinci