使用 Dot 和 Graphviz 画图

查看原文

Dot 是一个使用文本描述流程图的小语言,Graphviz 是开源的画图软件,这篇文章介绍了如何使用 Graphviz 将 Dot 文本描述的结构化图表生成图片。

  • 最基本的图表是节点和边,例如 graph G { a -- b; b --c; a -- c; }
  • 我们可以用 graph G { rankdir=LR; a -- b; } 生成左右方向的图表。
  • 有向图表可以用 digraph G { a -> b; b -> c; }
  • 节点名字太长可以用标签:digraph G { A [label="Apple"]; B [label="Banana"]; A -> B}
  • 不满足方框节点,可以写各种形状,例如:A[label="Apple", shape=octagon, style=filled]
  • 一个节点有多个子节点,可以用这种方式定义:A->{B C D}
  • 如果一个节点内部要分割出多个块,可以用:A[label="a | {b | c} | d"];
  • 用它很合适的一些场景:状态流程图,状态机,架构图,UML 图。

衍生思考:这是 DSL 应用的绝佳例子,开发者为小工具定制出了整套小语言,非常地 Unix!