0
点赞
收藏
分享

微信扫一扫

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

graphviz 的绘图布局_有向图

circo 布局

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

圆环布局

graphviz 的绘图布局_ci_02

 

neato 布局

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

graphviz 的绘图布局_有向图_03

 

twopi 布局

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

graphviz 的绘图布局_有向图_04

osage 布局

 

graphviz 的绘图布局_ci_05

 

无向图的布局

无向图的定义用关键字graph定义一个无向图,用“ - - ”表示节点之间的关系,如下:

 

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

dot 布局

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

 

graphviz 的绘图布局_无向图_06

 

circo 布局

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

graphviz 的绘图布局_无向图_07

 

neato 布局

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

graphviz 的绘图布局_ci_08

 

twopi 布局

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

graphviz 的绘图布局_无向图_09

 

osage 布局

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

graphviz 的绘图布局_无向图_10

 

fdp布局

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

graphviz 的绘图布局_ci_11

 

sfdp布局

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

graphviz 的绘图布局_无向图_12

DOT 语言

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

 


举报

相关推荐

0 条评论