导航

graphviz 的绘图布局

Posted on 2015-11-05 15:45  蝈蝈俊  阅读(6371)  评论(0编辑  收藏  举报

      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