我使用dot
命令來生成一個圖表,這裏是一系列軟件版本,顯示了這些版本之間的關係。水平分區圖中的節點
假設:
- 每個版本都有一個數字,數字越大,表示以後的版本。
- 每個版本必須出現以上以前版本的圖表。
- 每個版本都基於特定的早期版本,不一定是最新版本。
- 每個「基於」關係顯示爲從一個節點到另一個節點的箭頭。
- 這些版本的一些子集是分開的,因爲這個問題並不重要。我會稱他們爲「alt」版本。 「Alt」版本可以基於非「alt」版本,反之亦然。 (它發生在我對非「alt」版本更感興趣,但我希望圖中的所有版本。)
我可以生成清楚地顯示版本間關係的圖,但是我還想將所有「alt」版本放在垂直圖的右側,以及左側的所有非「alt」版本 - 同時保留所有關係信息(這意味着箭頭從左側右圖,反之亦然)。
我試過把「alt」節點放到子圖/集羣中,但是失去了集羣節點和它之外的節點之間的依賴關係(箭頭)。
我也嘗試在「中間」創建一個不可見節點,並在指定方向時從每個節點向「中間」節點定義依賴關係,但無法在同一圖形中混合垂直和水平依賴關係。
這裏的demo.dot
文件,我到目前爲止,這確實不做我想做的分區:
digraph releases {
// Use a box shape for all nodes
node [shape=box];
// Define labels for nodes
v106 [style=bold];
v105 [label="v105 alt" style=dashed];
v104;
v103;
v102 [label="v102 alt" style=dashed];
v101 [style=bold];
// Define dependencies
v106 -> v104;
v106 -> v105 [style=dashed];
v105 -> v102;
v104 -> v101;
v103 -> v101;
v102 -> v101;
// Use [style=invisible dir=none] to ensure that a later node appears above
// an earlier one even if there's no dependency.
v106 -> v105 [style=invisible dir=none];
v105 -> v104 [style=invisible dir=none];
v104 -> v103 [style=invisible dir=none];
v103 -> v102 [style=invisible dir=none];
v102 -> v101 [style=invisible dir=none];
}
而這裏的鏡像文件,用dot -Tpng demo.dot -o demo.png
產生什麼我想要的是讓所有「alt」節點位於一條不可見的垂直線的右側,並且所有其他節點位於其左側,所有箭頭依然存在(必要時失真)。
有沒有辦法做到這一點與dot
?還是有另一種工具(可用於Linux,特別是Debian)可以做同樣的事情?
這並不完全做什麼,我問了,但我認爲它確實提高了我的實際測試情況下的佈局。 –