用graphviz畫機房拓撲的幾個關鍵詞

2021-08-27 10:25:57 字數 1302 閱讀 1989

我準備用graphviz畫機房的拓撲圖。用excel或txt記錄機器和vlan什麼的資訊,用antlr寫個工具解析,然後生成dot檔案,最後用graphviz把dot畫出來。

想到有這麼幾個基本技術,今天試了一下。下面的這段**就是例子。行號是我加的,為了說明方便。執行結果如圖所示。

建一同學提到用graphviz畫uml,請參考 plantuml。不知道為什麼被牆了。

1 // dot -tpng test.dot -o test.png; eog test.png

2 digraph a

3 ;16

17

18 }

1. 定製節點

預設的節點是矩形圓形多邊形這樣規則的形狀。可以使用,人類看起來漂亮一些。

參見第4行,image="pc.png"。

2. 線連線的位置

有些節點要連出去很多線,線連線的位置如果散開,有時候比較難看。sametail可以讓它們都聚在一起,參見第10和第11行。

也許,有時候想從特別的角度連到節點上,可以指定方向,參見第12行node3:se,表示從東南方向連線。

3. 題注的位置

用了定製的以後,題注標在節點正中就有些不合習慣,可以用labelloc指定位置。參見第4行,lableloc=b,b表示底部。

線的題注 (這東西叫題注麼?) 除了label本身以外,可以用taillabel,headlabel,分別標在箭尾或箭頭。標在箭尾或箭頭的題注,可以用labeldistance=3, labelangle=-45進一步修訂,參見第10行。

4. 節點的位置

某個節點,如果希望它跟別的節點平級,用rank,參見第15行。rank不僅能same,還可以起名字。這一技術還可以用於水平的圖,讓時間與事件對齊。

還可以用node的屬性pos指定節點位置。實驗表明,1.需要給出所有的node的位置,2.要使用neato引擎,不能用dot本身。而且,我在實驗中發現,想指定乙個合理美觀的節點位置實在太難了。如果想強調某個結點的核心位置,請參見下一條。

5. 連線的位置

如果想強調某根線,用weight。weight越大,線越直,線連線的節點間距離越近。參見第9、11、12行。

weight是edge的屬性,因此既可以加在某條線的後的""裡,也可以如第9行的寫法,從此向下的edge都具有這樣的屬性。

--------------------[[

用Mapx畫網格的心得

1 如果要在圖中根據點,角度劃網格,不要採取求線和邊框交點,再連線的方法,這中方法只對水平垂直的線準確,對斜線均不准。因為邊框的範圍一般較大,幾十公里的尺度,畫出來的角度就有誤差。比如,根據三角計算出來的乙個75度角的交點,連線後再驗證角度,卻只有71度。4 劃線可以採用逐點連線的方法,可以有效的縮...

用Mapx畫網格的心得

1 如果要在圖中根據點,角度劃網格,不要採取求線和邊框交點,再連線的方法,這中方法只對水平垂直的線準確,對斜線均不准。因為邊框的範圍一般較大,幾十公里的尺度,畫出來的角度就有誤差。比如,根據三角計算出來的乙個75度角的交點,連線後再驗證角度,卻只有71度。4 劃線可以採用逐點連線的方法,可以有效的縮...

簡單的用CAShapeLayer畫個圈

首先看一下效果圖 這裡只需要兩個圖層。乙個cashapelayer和乙個cagradientlayer物件。通過貝塞爾曲線畫乙個圓,並設定為shapelayer的path。strokecolor表示填充顏色,fillcolor表示邊界的顏色。linewidth表示線寬。這裡主要要設定起始點,這裡區間...