2013-05-17 173 views
90

我正在使用Graphviz 2.30。標籤的水平定位是可行的,但在少數情況下,需要修改角度。當使用Graphviz時顯示符合邊緣的標籤

例如,我嘗試過各種值這裏角度,但沒有任何效果:

ABB -> ABACUS[label="applied", fontname="Arial", fontsize=15, labelangle=110]; 

如何可以與管線顯示標籤(即平行於)使用的Graphviz digraph當邊緣。

整個digraph將不會因NDA發佈。另外,旋轉只會應用於少數標籤。

我讀過類似的線程,如thisanother(或關於對齊的線程,例如),但沒有任何關於我的問題的幫助。

+2

'labelangle' 只適用於headlabels和taillabels ,而且它不旋轉標籤,但只是定義(一起wi th labeldistance)放置標籤的位置(仍然是水平線)。角度0從沿着邊緣的開始/結束點開始。使用角度+/-標籤可以打印在邊緣的上方或下方。距離爲0時,角度不起作用。 我也會非常感興趣的是讓標籤旋轉來跟隨邊緣,而afaik仍然沒有解決。 – bug313

+1

我感覺有沒有辦法做到這一點。但是由於功能的缺失很少被記錄(這會導致無數的文檔),所以很難寫出關於這個的權威答案。除非您可以指出在整個文檔中沒有提及任何類似的內容,也沒有提到代碼庫中任何隱晦的角落。 – bigblind

+1

Graphviz中的文本元素在定位過程中都以常規框爲界。該算法非常難以避免在邊緣放置期間跨越這些框邊界。如果標籤可以旋轉,這些盒子會變得更大,導致顯示區域的壓力很大。如果標籤可以重疊邊或節點,那麼它們可以稍後在成像管線中旋轉。 – Pekka

回答

0

編輯:另一個答案找到了一個選項,現在存在的文本與邊緣對齊。

您的最佳選擇可能是將圖表導出爲SVG並使用IllustratorInkscape對其進行微調。這隻在生成幾張圖時才實用。

我經常需要調整GraphvizGephi的輸出;但他們給了我一個很好的起點。

2

使用dot2latex可以指定lblstyle屬性。在pdf生成中,lblstyle的值由PGF/TikZ使用。

人們可以像這樣指定並行標籤:

​​

要生成PDF

$ dot2tex --tikzedgelabel file.dot > file.tex 
$ pdflatex file.tex 

結果是

enter image description here

+0

不幸的是,當生成圖形時,您將不得不知道所有標籤的角度; OP想要在邊緣發生任何角度時顯示與邊緣平行的標籤 – Galax

+1

@Galax謝謝我修復了答案 – malbarbo

+0

偉大的發現 - 這是'dot'的一個方便功能,我之前沒有注意到它(或者它可能是新的)。 – Galax