Graphviz 是一个开源的图可视化工具,非常适合绘制结构化的图标和网络。 本文记录安装即使用方法。
简介 {#简介}
-
graphviz
是贝尔实验室设计的一个开源的画图工具,它的强大主要体现在"所思即所得"(WYTIWYG,what you think is what you get),这是和office的"所见即所得"(WYSIWYG,what you see is what you get)完全不同的一种方式。 -
它的输入是一个用dot语言 编写的绘图脚本,通过对输入脚本的解析,分析出其中的点,边以及子图,然后根据属性进行绘制。
-
用graphviz来绘图的时候,你的主要工作就是编写dot脚本,只要关注图中各个点之间的关系,不需要考虑如何安排各个节点的位置。
下载安装 {#下载安装}
Linux {#Linux}
Windows {#Windows}
-
下载安装包 进行安装
-
安装时建议勾选将
安装目录 /bin
添加至系统路径如果没有勾选,安装后需要手动将
安装目录 /bin
添加至系统路径
Mac {#Mac}
测试 {#测试}
- 命令行执行
- 返回 graphviz 的版本信息则表示安装、路径配置完成
使用 {#使用}
布局引擎 {#布局引擎}
- graphviz中包含了众多的布局器:
| 布局方式 | 描述 | |-------|---------------------------------| | dot | 默认布局方式,主要用于有向图 | | neato | 基于spring-model(又称force-based)算法 | | twopi | 径向布局 | | circo | 圆环布局 | | fdp | 主要用于无向图 |
- 分别对应
graphviz
安装目录下bin
文件夹中的可执行程序
帮助 {#帮助}
- 执行
dot --help
可以查看帮助文档
基本使用 {#基本使用}
- 所有的 graphviz 命令都使用相同的格式
| 命令参数 | 描述 | |-------------|--------------------------------------------------------------------| | cmd | 指布局引擎,包括:dot,neato,twopi,circo,fdp | | flags | 指帮助文档中提供的标志配置方法,官方文档 | | input files | 输入文件路径 |
- 支持有向图
digraph
和无向图graph
基本示例 {#基本示例}
- 以一个精简版的官方示例为例
- 图文件:
- 将该文件保存为
test.txt
文本文件 - 在文件目录执行命令
- 生成
test.png
文件
参数配置 {#参数配置}
-
可以配置图形属性,包括
graph
,node
,edge
三种属性node与edge公用样式:"dashed"虚线, "dotted"点, "solid"固体框, "invis"隐藏 and "bold" 加粗
-
graph
属性在配置文件中时可以不用强调graph []
,直接写入属性
命令行配置 {#命令行配置}
-
可以在命令行配置,如帮助文档中的使用方法:
- 以上文示例为例,如需要通过配置 graph 属性为图形添加红色的标题,可以在命令行执行
图文件配置 {#图文件配置}
- 也可以在图的生成文件中配置属性
- 以上文示例为例,如需要通过配置 graph 属性为图形添加红色的标题,并配置node 属性,可以修改配置文件:
- 直接生成图像,在命令行不需要添加属性
- 生成效果
节点属性 {#节点属性}
- 属性可以设置在节点和边上,用一对 [] 表示,多个属性可以用空格或者 , 隔开。
分段 {#分段}
- 边属性支持分段
python 调用 {#python-调用}
-
graphviz 支持 python 调用
-
在安装好 graphviz 工具后需要安装 python 包
- 使用
- 得到 pdf 文件
参考资料 {#参考资料}
- https://zhuanlan.zhihu.com/p/21993254
- https://blog.csdn.net/iamljj/article/details/5862930
- https://graphviz.org/gallery/
- https://www.jianshu.com/p/6d9bbbbf38b1
- https://pypi.org/project/graphviz/