Graphviz - dot

Graphviz (英文:Graph Visualization Software的缩写)是一个由AT&T实验室启动的 开源工具包,可以用于绘制DOT语言脚本描述的图形。它也提供了供其它软件使用的库。 Graphviz是一个自由软件,其授权为Eclipse Public License。其Mac版本曾经获得2004年 的苹果设计奖2

命令说明
dot一个用来将生成的图形转换成多种输出格式的命令行工具。其输出格式包括PostScript,PDF,SVG,PNG,含注解的文本等等。
neato用于sprint model的生成(在Mac OS版本中称为energy minimized)。
twopi用于放射状图形的生成
circo用于圆形图形的生成。
fdp另一个用于生成无向图的工具。
dotty一个用于可视化与修改图形的图形用户界面程序。
lefty一个可编程的(使用一种被EZ影响的语言[4])控件,它可以显示DOT图形,并允许用户用鼠标在图上执行操作。Lefty可以作为MVC模型的使用图形的GUI程序中的视图部分。

layout 属性控制 ,layout = neato

plantuml 支持 使用 #@startdot ... #@enddot

brew install graphviz
touch x.dot
dot x.dot -T png -o x.png

语法

  • 无向图
graph G{
    A -- B
} 
  • 有向图
digraph G{
    A --> B
}
  • subgraph 子图
graph G {
    
    subgraph SG {
        
    }
}

常用图属性

使用 {...}

属性名默认值说明
label图片标签,如上面示例
bgcolor背景颜色,颜色文档点此
fontcolorblack字体颜色,定义上面示例的颜色
fontnameTimes-Roman字体
fontsize14字体大小
rank子图等级限制, same,min,max,source,sink
rankdirTB排序方向,LR(left to right) or TB(top to bottom)
compoundfalseIf true, allow edges between clusters. 配合 lhead 和 ltail 使用

常用节点属性

使用 node [...] 设置默认属性 A [...]

属性名默认值说明
labelnode name节点显示内容
colorblacknode边框颜色
fontcolorblack字体颜色
fillcolor背景色
fontnameTimes-Roman字体
fontsize14字体大小
shapeellipse形状,box、ellipse、circle、diamond、plaintext、point、triangle、invtriangle
style图形样式,eg. bold、dashed、dotted、filled
image背景图片地址

常用边属性

使用 edge [...] 设置默认属性, A -- B [...]

属性名默认值说明
label描述关系
colorblack箭头颜色
fontcolorblack关系文字颜色
dirforward设置方向:forward,back,both,none
arrowheadnormal箭头头部形状。box、crow、diamond、dot、none、normal、vee。箭头文档点此
arrowtail箭头尾部形状
arrowsize1.0箭头大小
style图形样式,eg. bold、dashed、dotted、filled
lhead当 compound 为true时,lhead用于指定边指向的cluster
ltail与ltail类似

子图

  • subgraph
  • subdigraph

其他

多节点联合

{A B} -- {C D}

图形节点