Graphviz 命令行繪圖程式 繪圖軟體 關係圖 指令

Graphviz-用指令來畫關係圖

2013-06-03
Graphviz(http://www.graphviz.org/)是一種命令行繪圖程式,能夠直接陳述圖片上的節點、邊、方向等性質,然後自動描繪出的整張圖片。本文將實際使用Graphviz並同時講解箇中的原理。
有向圖與無向圖

使用dot語言,第一步就是決定要畫哪種圖。圖分兩種:「有向圖」(圖2)與「無向圖」(圖3)。


▲圖2 有向圖。


▲圖3 無向圖。

有向圖以digraph宣告圖片,節點間的關係寫為"->"。


無向圖以graph宣告圖片,節點間的關係可以寫為"--"。


其中demo1與demo2是圖片的名稱,一般使用時常常留白不打。

使用引號

上文中的a、b、c除了作為程式內的識別字外,也會成為節點的顯示名稱(label)。不過如果這名稱中混了中文或夾了空格,Graphviz就有可能搞錯你的意思。

為防不必要的誤解,所以平常最好都用英文引號括住,就像下面這樣,結果如圖4所示:



▲圖4 混合了空白的示範,採用fdp渲染。

這樣就沒問題了!

子圖與簡化技巧

來看個複雜一點的例子,這是一份地中海海域的大略連接圖(圖5):



▲圖5 地中海海域連接圖,使用fdp渲染,種子為8 (-Gstart=8)。

這張圖有些新東西可以看。第一個是subgraph關鍵字。一如名字所示,是用來定義「次級圖片」用的。

次級圖片在dot的官方文件中常被叫作cluster subgraph,特指圖示中被方框包裹起來的那兩塊,其定義方式和一般的graph非常相似,不過使用上有兩件事需要留意:

它的命名得以cluster前綴開頭,否則語法雖然能過關,但無法產生圖面上預期的效果。

如果父圖是無向圖,它本身也得是無向圖;反之如果父圖是有向圖,這邊也得乖乖照著來。

第二個重點是下面這段:


用大括號括起,用空格分開——這是一口氣將好幾個節點群組起來同時操作的方法,其等效於:


甚至可以用以下程式碼畫出圖6:



▲圖6 大括號效果示意圖。

這語法很方便,可以靈活運用。

第三個不同處在於label = XXX這行。這是「屬性」的指定方式。


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!