Graphviz 工具教程
文章目录
- 2020-02-07 更新: 调整链接。
- 2016-11-08 更新: 修改一些文字错误。
- 2015-12-01 更新: 加入 Sphinx 插件 设置说明。
在 Graphviz 简易教程 中,我介绍了一点 Graphviz 的知识。下面的内容则是我在使用中积累的一些和工具有关的内容。
通用配置
使用下面三个关键字可以指定图片、节点和线段的默认设置。
1// 影响图片整张图片的配置
2// 左右方向,图片背景色为红色
3// 也可以用于 subgraph
4graph[rankdir="LR",bgcolor="red"];
5
6// 影响所有节点
7node[shape="box"];
8
9// 影响所有线条和箭头
10edge[style="dashed"];
指定多个节点
要想一次制定特定的多个节点的属性,可以这样写:
1{ node[fillcolor="red"]; node1; node2; node3; }
也可以换行写:
1{
2 node[fillcolor="red"];
3 node1; node2;
4 node3;
5}
中文乱码问题
若渲染出的图片中出现乱码,检查两项:
- 文件编码需要使用 utf-8;
- 指定字体名称。
在 Mac OS X 上,我没有指定字体名称,中文工作得很好。
但在 Windows 上,我的渲染出现了乱码,于是我在 dot 源码中指定了字体名称:
1// 影响图片级别的字体
2graph[fontname="Microsoft YaHei"];
3// 影响 node 中的文字字体
4node[fontname="Microsoft YaHei"];
5// 影响箭头或线条上的文字字体
6edge[fontname="Microsoft YaHei"];
但是在 dot 源码中制定字体会影响其他 OS 下的表现(例如在 OS X 上没有微软雅黑),因此应该在编译的时候通过参数指定字体。
在编译的时候指定字体:
1dot -Tpng -Gfontname=SimSun -Nfontname=SimSun -Efontname=SimSun graph.dot
Sphinx 插件
Sphinx 是一个优秀的文档工具。可以直接在其中使用 Graphviz 支持。
需要注意的是,如果在 Windows 上使用 Sphinx ,必须使用参数指定具体的字体,否则就会出现乱码。
这些配置直接写入 conf.py
即可。
1# 启用 graphviz 配置
2extensions = [ 'sphinx.ext.graphviz' ]
3
4# 为了不影响其他操作系统,需要判断操作系统
5if sys.platform == 'win32':
6 graphviz_dot_args = ['-Gfontname=Simsun', '-Efontname=Simsun', '-Nfontname=Simsun']
Vim 插件
在 Graphviz 简易教程 中,我建议使用 Eclipse 等 IDE 配合插件来编辑 dot 源码。实际上,我自己是使用 wmgraphviz.vim 来编辑 dot 的。默认情况下,wmgraphviz.vim 在 windows 下使用会有问题,主要是由于在它的编译代码中使用了 tee
这个 windows 批处理并不包含的命令。
许多 unix 移植工具中都包含 tee 工具(可参考 这里 ),由于只需要 tee ,我们可以使用 tee.bat ,把这个命令放在 path 路径中即可。
当然也可以直接修改 wmgraphviz.vim 的源码,修改 ftplugin/dot.vim
中的这一行:
1let cmd = '!('.a:tool.' -O -T'.a:output.' '.g:WMGraphviz_shelloptions.' '.shellescape(expand('%:p')).' 2>&1) > _ && type _&&type _>>'.shellescape(expand('%:p:r').'.log')
原理在这里有介绍: How to display the output text in the dos command line while redirecting 。
对于上面提到的中文问题,可以直接编辑配置文件:
1if has('win32')
2 let g:WMGraphviz_shelloptions="-Gfontname=SimSun -Nfontname=SimSun -Efontname=SimSun"
3endif
自动刷新的图像查看软件
用 Vim 配合自动刷新的看图软件即可实现一个 Graphviz 编辑器,把屏幕分成两半,一般是 Vim,一半是看图软件,Vim 这边保存之后使用 wmgraphviz.vim 提供的快捷键输出图像,然后另一半的看图软件自动刷新实现预览。
- Mac 下的 graphviz 官方 pkg 安装包自带一个
Graphviz.app
工具,安装后自动与扩展名.gv
关联,双击即可打开预览,在修改.gv
文件的时候,它将自动刷新; - Mac 下还可以使用 Finder 的预览功能,或者使用 Xee3;
- Windows 下可使用资源管理器的预览窗格,或者 IrfanView 的 Shirt+R 快捷键手动刷新,或者 JPEGView 直接支持自动刷新。
标记语言支持
我的 Fenced Code Extra for Python-Markdown 支持在 Markdown 中嵌入 Graphviz 支持。
Sphinx 也支持 Graphviz 插件。
两篇很完整的教程
- 文章ID:2379
- 原文作者:zrong
- 原文链接:https://blog.zengrong.net/post/graphviz-tool-guide/
- 版权声明:本作品采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可,非商业转载请注明出处(原文作者,原文链接),商业转载请联系作者获得授权。