最近想写一些文档,画一些程序的逻辑图,用了vision,markdown等软件感觉不怎么好用,于是找到graphviz,这款强大的软件。下面介绍一些入门,还有自己在用的过程中遇到的问题
1、中文乱码的问题。
采用graphviz.exe的界面编写好图形语句之后生成图片中文文字显示都没问题,当关闭.gv文件之后再打开.gv文件那么原来里面的中文就会出现乱码。在网上搜到一个解决的办法,重新设定中文自定即:
找到安装路径在 C:\Program Files\Graphviz 2.21\etc\fonts\fonts.conf,找到以下这行: <dir>#FONTDIR#</dir>
改成 Windows 字型路径: <dir>C:\WINDOWS\Fonts</dir>
我没有成功,可能是版本不对,我就没有找到<dir>#FONTDIR#</dir>。
2、闪退的问题。
采用graphviz.exe编辑.gv文件,当编写的内容太多的时候就会出现自动关闭的情况,这个就让我不能忍受了,只能采用.dot或者.gv文件来搞了。
3、下面是自己的一个例子,用例子来解释一下dot的基本语法
digraph main {
//graph[rankdir="LR",rank="same"];
/* 这一段是用来注释的
这里可以描述这段图片意义
*/
//子图(使用subgraph声明)可以进行和“父图”类似的设置,唯一注意的是子图必须以cluster做为名称的前缀,这点要注意,不用cluster的话就没有效果了
subgraph cluster_0 {
//这段是图cluster_0的属性,可以直接在这里面写
style=filled;
color=lightgrey;
fontname="KaiTi";
label = "主流程";
node [style=filled,color=white,fontname="SimSun",shape=box];
graph[rankdir="LR",rank="same"];
a0 -> a1[label="XXX"];
a1-> a2[label="XXX"];
a2-> a3[label="XX"];
a0[label="start",style=filled,color=red];// 这个节点的颜色会把上的color=white的颜色给覆盖了
}
subgraph cluster_1{
graph[rankdir="LR",rank="same"];
//rankdir="LR";
//rank="same";
node [style=filled, color=red,shape=box];
edge[style=dashed];
label="节点流程";//这个会乱码
a1->b0[label="yyy"];
b0-> b1[label="yyx"];
b1-> b2 [label="xke"];
b2-> b3;
}
}
4、每次运行程序生成图片的命令是:dot -Tpng myimage.dot/myimage.gv -o image.png,反复输入的话会比较烦,如果用一些文本编辑器,可以写一个运行python的脚本会很快,在windows下我们也可以写成批处理脚本比如my.bat,里面就写一句话,以后每次生成图片的时候换个名字就好了。
my.bat
Rem dot -Tpng myimage.dot -o image.png pause; dot -Tpng myimage.dot -o myimage.png pause;
附:windows系统中文字体的英文名
新細明體:PMingLiU 細明體:MingLiU 標楷體:DFKai-SB 黑体:SimHei 宋体:SimSun 新宋体:NSimSun 仿宋:FangSong 楷体:KaiTi 仿宋_GB2312:FangSong_GB2312 楷体_GB2312:KaiTi_GB2312 微軟正黑體:Microsoft JhengHei 微软雅黑体:Microsoft YaHei
【参考博客】
1、http://blog.csdn.net/lanchunhui/article/details/49472949
2、http://smallx.me/2016/04/10/%E4%BD%BF%E7%94%A8Graphviz%E7%BB%98%E5%88%B6%E6%B5%81%E7%A8%8B%E5%9B%BE%E5%92%8C%E5%85%B3%E7%B3%BB%E5%9B%BE/
3、http://www.graphviz.org/Home.php
4、https://xstarcd.github.io/wiki/windows/windows_cmd_summary_commands.html
原文:http://www.cnblogs.com/boywwj/p/7440179.html