在 org-mode 中使用 Graphviz 畫關係圖
發表於
Graphviz 是一個非常強大的 關係圖 繪製軟體,可以透過 dot 語言來描述節點與 節點之間的關係,來畫出非常漂亮的關係圖。
舉例來說,你可以很輕鬆的畫出下面這樣的圖: (圖片取自 Graphviz 官網)

設定你的 emacs
org-mode 有一個 babel 功能,可以讓你對程式碼區塊 (src block) 使用 C-c C-c 來進行運 算,對於 Graphviz 程式,這樣的運算可以直接獲得結果,也因此,在 org-mode 裏面使用 Graphviz 你並不需要建立新的檔案。
預設的 org-mode 並沒有打開這項功能,因此你要在你的 .emacs 加入以下幾行 設定
(org-babel-do-load-languages
'org-babel-load-languages
'((dot . t)))
在 org-mode 使用 Graphviz
在 org-mode 要直接使用 Graphviz 畫圖非常的簡單,將你的 dot 程式寫在程 式碼區塊 (src block),並使用 :file 來告訴 org-mode 這個檔案會輸出到哪 裡,此外由於我們只需要輸出的結果,因此在 :exports 欄位則設定為 results。
下面就是我們用來繪圖的 dot 程式碼:
#+BEGIN_SRC dot :file data/2013/graphviz-example.png :exports results
digraph G {
subgraph cluster_0 {
style=filled;
color=lightgrey;
node [style=filled,color=white];
a0 -> a1 -> a2 -> a3;
label = "process #1";
}
subgraph cluster_1 {
node [style=filled];
b0 -> b1 -> b2 -> b3;
label = "process #2";
color=blue
}
start -> a0;
start -> b0;
a1 -> b3;
b2 -> a3;
a3 -> a0;
a3 -> end;
b3 -> end;
start [shape=Mdiamond];
end [shape=Msquare];
}
#+END_SRC
如果你對上面的程式碼區塊使用了 C-c C-c ,則他會自動幫你產生下面的資 訊,並且在你設定的路徑產生輸出的圖片檔。
#+RESULTS[6a0acf86296f27722ea943b1748d99126186564c]:
[[file:data/2013/graphviz-example.png]]
我們產生的圖片檔如下:

參考連結
[2] Graphviz 官方網站