画图工具Graphviz安装配置
Graphviz (英文:Graph Visualization Software的缩写)是一个由AT&T实验室启动的开源工具包,用于绘制DOT语言脚本描述的图形。它也提供了供其它软件使用的库。Graphviz是一个自由软件,其授权为Eclipse Public License。其Mac版本曾经获得2004年的苹果设计奖。
Graphviz是门基于dot语言的绘图工具,也就是说它不是使用鼠标来画图的,而是通过dot这种描述语言来做的,然后在命令行下使用命令生成对应的图片,这样做的优点是不用去手功的对齐坐标,而且也可以做为一些可视化的解决方案,但是它的缺点同样是显著的:无法对每一个元素的位置进行很详细的控制。这里就存在一个取舍问题了。像我这种就用来画画流程图的人来说,已经够用了,而且要比visio那种工具更好用。
DOT语言由三个对象组成grahps,nodes,edges,这与离散数学中的图的定义是一个概念。下面是个具体的例子,第一行是图名与类型,其于的就是创建nodes,edges,或者subgraphs。在要创建的这些对象中,它们的名字与属性可以是 C identifiers,数字,或者是quoted C string, 引号的作用主要是为了在名字与属性中可以带空白符与标点符号。
例子:
| digraph G { main -> parse -> execute; main -> init; main -> cleanup; execute -> make_string; execute -> printf; init -> make_string; main -> printf; execute -> compare; } |
在命令行使用如下命令
| dot -Tpng example.dot -o example.png |
-T的意思是生成的文件是png格式的,example.dot是代码所在文件,-o指定生成的文件名。运行成功后将会类似如下的图。

如果想让边带有文字,如下图,可以使用类似如下语句
| main->parse[label=”abc”]; |
下面是一个比较复杂的例子:
| digraph G { edge [fontname="FangSong"]; node [shape=box, fontname="FangSong" size="20,20"]; { Lexical_Analyzer [label="词法分析器"]; Syntax_Analyzer [label="语法分析器" ]; Semantic_Analyzer [label="语义分析" ]; Intermediate_Code_Generator [label="中间代码生成器" ]; Machine_Independent_Code_Optimizer [label="机器无关代码优化器" ]; Code_Generator [label="代码生成器" ]; Machine_Dependent_Code_Optimizer [label="机器相关代码优化器" ]; } node[shape=plaintext, fontname="KaiTi" ]{ character_stream [label="字符流"]; target_machine_code [label="目标机器语言" ]; }character_stream ->Lexical_Analyzer; Lexical_Analyzer ->Syntax_Analyzer [label="符号流"]; Syntax_Analyzer ->Semantic_Analyzer [label="语法树"]; Semantic_Analyzer ->Intermediate_Code_Generator [label="语法树"] ; Intermediate_Code_Generator->Machine_Independent_Code_Optimizer [label="中间表示形式"]; Machine_Independent_Code_Optimizer ->Code_Generator [label="中间表示形式"]; Code_Generator ->Machine_Dependent_Code_Optimizer [label="目标机器语言"]; Machine_Dependent_Code_Optimizer->target_machine_code ; } |

这里要注意的是中文问题,graphviz默认设置下是不支持中文,如果在dot文件中直接写中文,会显示成乱码,要解决这个问题要做两件事,
| 1、把源文件保存为UTF-8的格式 2、设置fontname,也就是红色的部分, |
如:
digraph G {
rankdir = LR;
node[fontname="Microsoft YaHei"];
中文1,->中文2;
};
如果想更深入的了解graphviz,可以去它的官方网站看一下相关文档,里面还有一些paper,如果感兴趣的话也可以看看,其实graphviz还用到了编译原理的知识,只是没有什么创新所以也就没有重点说了,但从这可见编译原理的重要性。
更多文档:http://www.ibm.com/developerworks/cn/aix/library/au-aix-graphviz/index.html?ca=dat
但是后来又看到有个东西叫做:
pygraphviz
对应主页:
对应的下载地址有两个,一个是Python官网中的:
http://pypi.python.org/pypi/pygraphviz/
一个是其自己网站中的:
http://networkx.lanl.gov/download/pygraphviz/
分别都是下载对应的源码,要自己安装的。
但是用源码去安装,涉及到要自己编译。
目前找到可以参考的例子是:
Installing PyGraphviz on Windows
更多:Doxygen + Graphviz windows下安装配置(图解)
使用:
http://www.cnblogs.com/sld666666/archive/2010/06/25/1765510.html
画图工具Graphviz安装配置的更多相关文章
- 第【一】部分Netzob项目工具的安装配置
第[一]部分Netzob项目工具的安装配置 声明: 1)本报告由博客园bitpeach撰写,版权所有,免费转载,请注明出处,并请勿作商业用途. 2)若本文档内有侵权文字或图片等内容,请联系作者bitp ...
- 代码静态分析工具PC-LINT安装配置
代码静态分析工具PC-LINT安装配置--step by step 作者:ehui928 ...
- python操作三大主流数据库(3)python操作mysql③python操作mysql的orm工具sqlaichemy安装配置和使用
python操作mysql③python操作mysql的orm工具sqlaichemy安装配置和使用 手册地址: http://docs.sqlalchemy.org/en/rel_1_1/orm/i ...
- PHP - xhprof+Graphviz 安装配置
简介:XHProf是Facebook放出的轻量级调试工具.和Xdebug相比,XHProf更加易用和可控,尤其是生成流程图和调试数据对比的功能很好很强大. 参考:http://us2.php.net/ ...
- ②---Java开发工具Eclipse安装配置
Java开发工具Eclipse安装及配置 以下将为大家介绍Java开发工具Eclipse安装及配置. 一.下载Eclipse安装文件 正所谓工欲善其事必先利其器,我们在开发java语言过程中同样需要依 ...
- NLTK和Stanford NLP两个工具的安装配置
这里安装的是两个自然语言处理工具,NLTK和Stanford NLP. 声明:笔者操作系统是Windows10,理论上Windows都可以: 版本号:NLTK 3.2 Stanford NLP 3.6 ...
- BUG管理工具——Mantis安装配置
配置环境: CentOS6.5(所有操作在root用户下面操作) 1. 关闭防火墙, service iptables stop(防止防火墙捣乱,或者还得手动添加端口号的麻烦) 2. Disable ...
- npm 私服工具verdaccio 安装配置试用
1. 安装 npm install -g verdaccio 2. 启动 verdaccio // 界面显示信息 Verdaccio doesn't need superuser privileg ...
- Linux性能实时监测工具netdata安装配置
netdata:功能强大的实时性能检测工具,展示地址. github地址:https://github.com/firehol/netdata 本文介绍在CentOS 6.7下安装netdata 1. ...
随机推荐
- Linux企业级项目实践之网络爬虫(18)——队列处理
所有的URL都接受管理,并在此进行流动.URL从管理模块的存储空间开始,一直到最后输出给磁盘上的URL索引,都由此部分调度.首先,给出URL调度的一般过程,如图所示.其流程的各个具体操作,后面详述.要 ...
- 2015第23周四HTML特殊字符显示问题
1.项目中常采用EL表达式来输出后台内容,但测试发现它并不能完美处理要输出内容包含有<>或&等HTML特殊字符问题.先直接给出此问题JSTL的解决方案: 1.引入标签:<%@ ...
- bzoj有趣的题目
你会发现bzoj上好多题AC率高的让人不敢想象 其实是因为数据没发,所以被n个人水过了-- 1142 1167 1351 1354 1359 1482 2812 3056 1469 我有特殊的减少代码 ...
- poj3667---Hotel 线段树区间合并,区间更新
题意:有N个房间,M次操作.有两种操作(1)"1 a",表示找到连续的长度为a的空房间,如果有多解,优先左边的,即表示入住.(2)"2 b len",把起点为b ...
- 深入理解linux网络技术内幕读书笔记(一)--简介
Table of Contents 1 基本术语 1.1 本书常用的缩写 2 引用计数 2.1 引用计数函数 3 垃圾回收 3.1 异步 3.2 同步 4 函数指针 4.1 缺点 5 goto语句 5 ...
- 集成Dubbo服务(Spring)
Dubbo是什么? Dubbo是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点. Dubbo[]是 ...
- python3-day6(模块)
一.OS模块 1.os.system('ls -l') #子shell运行,获取返回值,不是结果. 2.os.popen('ls -l').read() #获取结果. 二.sys模块 1.sys.ar ...
- 获取文本区域(textarea)行数【换行获取输入用户名个数】
需求:输入会员名,一行一个,最多可输入1000个 效果:
- [Javascript] How to use JavaScript's String.replace
In JavaScript, you can change the content of a string using the replace method. This method signatur ...
- LoadRunner监控windows资源报错Monitor name :Windows Resources. Cannot connect to machine
目标机:被监控的机器,windows server 2008 R2. 测试机:执行control的机器,windows7 操作:在测试机上执行Control,添加windows的监控 问题现象:Mon ...