最近重温一点数据结构,想知道有哪些软件可以画「图(Graph)」,搜索结果里很多提到 Graphviz。因为很好用的数据库文档工具 SchemaSpy 就是用 Graphviz 来生成图形文件,每次配置的时候都要间接用到,有自然的亲近感,这次就决定直接用用看。

dot

Graphviz 其实包含了多个不同的组件,以针对不同的使用情况。其中常用的是 dot,使用标记语言 DOT Language 描述图。以下是一个示例 .dot 文件

digraph G {
	main -> parse -> execute;
	main -> init;
	main -> cleanup;
	execute -> make_string;
	execute -> printf
	init -> make_string;
	main -> printf;
	execute -> compare;
}

而日常的使用,可以用命令行直接从 .dot 输出为图片

dot -Tpng sample.dot -o sample.png

dot sample graph

安装

心想 Graphviz 不会没有 GUI 吧?找了找,macOS 上 Graphviz 只能通过 MacPorts 和 Homebrew 安装,Homebrew 页面上显示有一个 --with-app 参数(需要 XCode 完全安装)。

用 Homebrew 装好,命令行 dot 可用,但应用程序里并没有 Graphviz 或其它组件的影子。原因是因为 Homebrew build 好之后并不会自动复制程序文件到 Applications 目录,解决方法如下:

  1. 终端执行 brew info graphviz ,找到 Graphviz 的目录(如:/usr/local/Cellar/graphviz/2.40.1
  2. 将目录中的 Graphviz.app 复制到 Applications 目录

愉快地打开 Graphviz GUI,发现不能新建文件,只能打开已有的 .dot 文件,这并不是 Editor 而只是个 Viewer

😓 其实直接编写 .dot 文件和用 GUI 编辑各有优劣和适用场景,慢慢也就习惯了。

其它

GraphViz 更像是一个被其它程序广泛应用的组件。其它一些工具:

在 Graphviz 的资源页列出了更多第三方应用


写完了才发现,另有一个 macOS graphviz GUI,不过已经是 2004 年的古旧版本,略过。