google code-beautifer

星期二, 2月 24, 2009

用 Graphviz 畫工程科學說明圖

一般而言,工程科學說明圖是網路/樹狀結構但沒有很強的流程方向性的圖我用graphivz來畫,圖是網路/樹狀結構而且有很強的資料流程方向性用dia來畫。其他的我才用xfig來畫。

我覺得graphviz 最大的好處是自動編排。只要用文字編輯器把這些節點,聯接,文字相互關係...的.dot 描述檔寫好後。graphivz編譯會自動產生編排好的圖形。不用拿滑鼠在螢幕上移來移去。這在設計複雜的關聯圖形時很重要,而且這些文字大部可以在後面的流程回收。作過一次標準資料庫設計就知道了。剛開始學習要點時間,但是對理工科的人而言長期的回收絕對划算。

Graphviz 編譯命令長的像這樣子
dot -Tpng foo.sql.dot -o foo.png
,除了png 外,也可以選pdf,ps, gif 之類的格式,或是不同風格的圖形編排,輸出成png 或ps 後可以在openoffice 文件裡當插圖用,用中文的話要記得用utf8輸入即可。

graphviz跟emacs 整合的話,工作會更方便,用emacs 編完Graphviz 的.dot
描述檔之後,直接C-c C-c 編譯。(這跟python是一樣的)C-c C-p 直接在 emacs裡預覽輸出圖形。下圖是在emacs裡預覽的結果。

安裝其實很簡單,在winodws 上也有 wingraphviz 可以用。我試過跟某個用winodws平台的人共同用graphviz 溝通開發資料庫,沒有問題。應用實例後面會另文介紹。

參考
用 Graphviz 畫資料庫設計圖

2 則留言:

art wang 提到...

請問 Graphviz 是不是也可以用來繪製心智圖 (mind map)?

shelandy 提到...

據我所知,像freemind 之類的只是有個方便的圖形介面畫樹狀圖,Graphviz 連網路狀圖都能畫,樹狀圖當然也行。

說實在話,人的思維是很複雜,單靠樹狀圖是不夠的。這點Graphviz絕對勝出。

唯一要考量的是:freemind 之類的圖形介面讓畫簡單的樹時很方便,你用Graphviz是否也覺得有那麼上手?答案這是每個人都不一樣的。我是覺得一兩次之後就熟悉了。差異並不大