Dot语言基础
摘自维基百科DOT语言
DOT语言是一种文本图形描述语言。它提供了一种简单的描述图形的方法,并且可以为人类和计算机程序所理解。DOT语言文件通常是具有.gv或是.dot的文件扩展名。
很多程序都可以处理DOT文件。其中的一些,例如dot,neato,twopi,circo, fdp与sfdp,会读取DOT文件并将之渲染成为图形格式。其它的一些,比如gvpr,gc,accyclic,ccomps,sccmap和tred,可以读取DOT文件并对它代表的图形进行一些处理。类似于GVedit,lefty,dotty和grappa则提供了交互式的界面。以上程序大部分都包括在了Graphviz 软件包中。
一、图形类别
1.无向图
在最简单的应用中,DOT语言可以用来描述一张无向图。无向图显示了对象间最简单的关系,例如人之间的友谊。使用关键字graph开始一张无向图的定义,并用大括号包含要描述的节点,双连字号(--)被用来描述节点间的关系。另外,一行的末尾需要加上分号(;)。graph graphname {
a -- b -- c ;
b -- d ;
}
使用发帖工具箱输入上述代码,帖子类型选择 Graphviz画图(dot),或者直接使用代码显示效果如下:
graph graphname {
a -- b -- c;
b -- d;
}
2.有向图
类似于无向图,DOT语言也可以用来描述一张有向图,类似于流程图和树状图。其语法与无向图相似,但要在图的最开始使用关键字'digraph',并用箭头(->)表示节点直接的关系。digraph graphname {
a - > b - > c ;
b - > d ;
}
显示效果:
digraph graphname {
a -> b -> c;
b -> d;
}
3.属性
DOT语言中,可以对节点和边添加不同的属性。这些属性可以控制节点和边的显示样式,例如颜色,形状和线形。可以在语句和句尾的分号间放置一对方括号,并在其中中放置一个或多个属性-值对。多个属性可以被逗号和空格(, )分开。节点的属性被放置在只包含节点名称的表达式后。graph graphname {
a [label="Foo" ] ;
b [shape=box] ;
a -- b -- c [ color=blue] ;
b -- d [style=dotted] ;
}
graph graphname {
a [label="Foo"];
b [shape=box];
a -- b -- c [ color=blue];
b -- d [style=dotted];
}
4.注释
DOT语言支持C语言与C++风格的单行与多行注释。另外,也支持Shell脚本风格的以#开头的注释。注意:在论坛就不要用注释的代码了。
// 单行注释
/* 多行
注
释 */
# 如此的行也会被忽略。
5.一个简单的例子
以下是一个描述了乙烷化学键结构的示例脚本。这是一个无向图,包括了上述解释的节点属性。graph ethane {
C_0 -- H_0 [type =s];
C_0 -- H_1 [type =s];
C_0 -- H_2 [type =s];
C_0 -- C_1 [type =s];
C_1 -- H_3 [type =s];
C_1 -- H_4 [type =s];
C_1 -- H_5 [type =s];
}
graph ethane {
C_0 -- H_0 [type=s];
C_0 -- H_1 [type=s];
C_0 -- H_2 [type=s];
C_0 -- C_1 [type=s];
C_1 -- H_3 [type=s];
C_1 -- H_4 [type=s];
C_1 -- H_5 [type=s];
}
更多资料