使用 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!