1. 程式人生 > >graphviz畫圖軟體介紹及使用感受

graphviz畫圖軟體介紹及使用感受

1 介紹

一次偶然的機會接觸到了畫圖軟體graphviz,它主要用於畫有向圖、《資料結構》課程裡的資料結構圖等比較方便。它與tikz的比較為:

  1. tikz可以畫任何種類的圖。因為tikz就相當於你拿著一個畫筆,面對一張空白的紙做畫,各種位置、佈局都要自己控制;
  2. graphviz擅長於有向圖等。它封裝了底層的佈局,位置關係等,有一些底層的演算法在幫你做這些事情。

所以,我認為在graphviz擅長的領域,使用其畫圖特別方便。我可以說是一個畫圖愛好者,使用過多種多樣的畫圖軟體,每發現一個不免要點評一番,不周之處,敬請原諒。

2 使用初步

graphviz是一個軟體,而要畫圖,你需要使用dot語言1

,舉下面一個例子:

digraph G {
  main -> parse -> execute;
  main -> init;
  main -> cleanup;
  execute -> make_string;
  execute -> printf;
  init -> make_string;
  main -> printf;
  execute -> compare;
}

得到的繪圖結果為:
這裡寫圖片描述
很方便吧!但是你若要想繪製更加豐富的圖形,則需要使用各種各樣的屬性,用來控制結點、邊等的樣式。如下程式碼:

digraph G{
  size ="4,4"
; main [shape=box]; /* this is a comment */ main -> parse [weight=8]; parse -> execute; main -> init [style=dotted]; main -> cleanup; execute -> {make_string; printf} init -> make_string; edge [ color=red]; // so is this main -> printf [style=bold,label="100 times"]; make_string [label="make a \nstring"
]; node [shape=box,style=filled,color=".7 .3 1.0"]; execute -> compare; }

輸出的效果為:
這裡寫圖片描述
短短的幾行程式碼就可產生豐富的圖形,方便我們版本控制,對圖形進行自動化處理等工作。

3 圖片儲存

繪製好圖片時,可將圖片儲存為各種各樣的格式,如下:

  • 點選layout按鈕,產生圖形:
    這裡寫圖片描述

  • 然後再點選setting,即出現一個對話方塊,Output File Type裡可以設定各種圖片格式,如下圖:
    這裡寫圖片描述


  1. Emden R. Gansner, Eleftherios Koutsofios, and Stephen North. Drawing graphs with dot. 2010.