一种定义图元关系的描述语言。DOT脚本文件非常简洁易读,也可以通过开源工具GraphViz来生成图像文件如bmp, png等。另外也有专门渲染DOT脚本的浏览器xdot。 看一个简单例子: graph s { C_0 -- H_0 ; 把以上内容保存为文本文件a.dot, 然后执行dot -Tpng -oa.png a.dot,就生成a.png如下:
这是一个分子式。DOT语言是不是很简单? 还有一些语法可以给每个图元,每条边设置颜色,形状,标签,位置等各种属性。这些语法也同样非常简洁,看下面的例子你就懂了: digraph s { 生成打图如下:
这个是有向图(directional graph), 脚本的第一个词需要换成"digraph"。常用的属性有color, style, shape, penwidth, label等。label中\r, \l, \n都表示换行,但对齐方式分别是右对齐,左对齐,居中。 DOT语言的相关文档: http://www./Documentation.php 由DOT脚本生成图片的工具叫GraphViz, 包括一序列小工具。dot就是其中一个。 DOT 浏览器叫xdot, 直接在窗口渲染,不需要生成图像文件,强烈推荐。 很多图都比较适合用DOT来定义,比如流程图,组织关系图,类图,状态转换图等等。 在刚接触DOT不到3天的时间里,我就分别在代码性能优化,协议栈状态机定义两件事情用到了DOT,感觉非常方便。 性能优化:gprof可以对一个程序运行时进行profiling,生成报告,包括函数调用关系,每个函数被调用的次数,花费的时间。但这个报告是文本的,不够直观。可以通过一个gprof2dot.py脚本,把gprof的输出翻译成一个DOT文件,然后再用GraphViz转成图片或者直接用xdot来查看。 协议状态机: 我现在项目中的任务是实现LTE MAC层。周末刚知道了DOT,周一就需要定义LTE MAC的状态转换图,正好派上用场。 好东西一定要分享,于是花了半小时写了这个介绍。如果你通过这篇文章学会了DOT, 喜欢上了DOT,用上了DOT, 一定要来我这里注册一下哦。 |
|