01.Graphviz简介
Graphviz
是贝尔实验室开发的一个高效而简洁的开源图形可视化软件。Graphviz设计的初衷是简化有向图和无向图的布局,使用特定的领域特定语言:dot
定义图形,布局引擎来解析图形定义并完成自动布局,渲染和输出。Graphviz可以将图形导出为图片,SVG,PDF,完整的支持列表详见:
Output Formats
。
安装
下载地址
windows
- 下载安装包
- 安装到任意位置
- 将
bin
目录增加到PATH
环境变量 - 启动一个命令行,执行
dot --help
验证安装是否成功
Debian
$ sudo apt-get update
$ sudo apt-get install graphviz graphviz-doc
示例
$ mkdir -p graphviz/Testing
$ cd graphviz/Testing/
$ touch Testing.dot
使用文本编辑器编辑Testing.dot
,添加如下内容
digraph G {
main -> parse -> execute;
main -> init;
main -> cleanup;
execute -> make_string;
execute -> printf;
init -> make_string;
main -> printf;
execute -> compare;
google [label="谷歌搜索" fontname="Noto Sans CJK SC Regular:style=Regula"];
google -> execute;
}
生成图片
$ dot -T svg Testing.dot -o Testing.svg
生成图片如下:
注意: Graphviz默认设置下是不支持中文 图形
label
为非英文字符时,需要指定渲染使用的字体(Noto Sans CJK SC Regular:style=Regula
),防止生成的图片乱码。
在Linux下,可以使用fc-list
查看可用的字体。
Windows环境下,可以使用支持中文的字体。
windows系统中文字体
字体 | 引用名 |
---|---|
新細明體 | PMingLiU |
細明體 | MingLiU |
標楷體 | DFKai-SB |
黑体 | SimHei |
宋体 | SimSun |
新宋体 | NSimSun |
仿宋 | FangSong |
楷体 | KaiTi |
仿宋_GB2312 | FangSong_GB2312 |
楷体_GB2312 | KaiTi_GB2312 |
微軟正黑體 | Microsoft JhengHei |
微软雅黑体 | Microsoft YaHei |
Visual Studio Code插件
Visual Studio Code编辑器有一款可用实时预览Graphviz的插件: Graphviz Preview ,可以实时预览Graphviz图形的渲染后效果。
Graphviz的布局器
Graphviz中包含了众多的布局器,常用的有以下几个
- dot - 默认布局方式,主要用于有向图
- neato -
spring model
布局,适用于不是太大图形(小于100个节点),Neato尝试全局能量最小化函数,等效于多维度统计缩放(图形学算法相关概念,不是很懂,原文是Neato attempts to minimize a global energy function, which is equivalent to statistical multi-dimensional scaling.
)。 - fdp - 类似于neato的
spring model
布局,不同的是他使用减小力量(reducing forces
),而不是能量(working with energy
) - sfdp - 多尺寸的fdp,用于大型图布局
- twopi - 径向布局,节点放置在同心圆上,位置取决于节点与指定根节点的距离。
- circo - 环形布局,适用于某些特定的多重循环结构图,例如电信网络等。