graphviz 的繪圖布局


      graphviz是貝爾實驗室開發的一個開源的工具包,它使用一個特定的DSL(領域特定語言):dot作為腳本語言,然后使用布局引擎來解析此腳本,並完成自動布局。

graphviz中包含了眾多的布局器:

  • dot 默認布局方式,主要用於有向圖
  • neato 基於spring-model(又稱force-based)算法   基於斥力+張力的布局
  • twopi 徑向布局
  • circo 圓環布局
  • osage
  • fdp 用於無向圖
  • sfdp 用於無向圖

有向圖相關布局

除了 fdp 之外,其他都可以適用於 有向圖。 對下面有向圖采用不同布局器產生的效果如下:

有向圖的定義用關鍵字digraph定義一個有向圖,用“ -> ”表示節點之間的關系

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

 

dot 布局

dot 22.gv  -Kdot -Tpng -o 22dot.png

由於 Kdot 是默認, 所以可以簡化成  dot 22.gv  -Tpng -o 22dot.png

image

circo 布局

命令: dot 22.gv  -Kcirco -Tpng -o 22circo.png

圓環布局

image

 

neato 布局

命令: dot 22.gv  -Kneato -Tpng -o 22neato.png

image

 

twopi 布局

命令:dot 22.gv  -Ktwopi -Tpng -o 22twopi.png

image

osage 布局

 

image

 

無向圖的布局

無向圖的定義用關鍵字graph定義一個無向圖,用“ - - ”表示節點之間的關系,如下:

 

graph test123 {
    a -- b -- c;
    a -- {x y};
    x -- c ;
    x -- y ;
}

dot 布局

dot 33.gv  -Kdot -Tpng -o 33dot.png

 

image

 

circo 布局

dot 33.gv  -Kcirco -Tpng -o 33circo.png

image

 

neato 布局

dot 33.gv  -Kneato -Tpng -o 33neato.png

image

 

twopi 布局

dot 33.gv  -Ktwopi -Tpng -o 33twopi.png

image

 

osage 布局

dot 33.gv  -Kosage -Tpng -o 33osage.png

image

 

fdp布局

dot 33.gv  -Kfdp -Tpng -o 33fdp.png

image

 

sfdp布局

dot 33.gv  -Ksfdp -Tpng -o 33sfdp.png

image

DOT 語言

http://lesliezhu.github.io/public/dot-begin.html

 

相關命令行參數請參考:

http://www.cnblogs.com/ghj1976/p/4935541.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM