Dot语言

DOT語言是一種文本图形描述语言。它提供了一种简单的描述图形的方法,并且可以为人类和计算机程序所理解。DOT语言文件通常是具有.gv或是.dot的文件扩展名。

很多程序都可以处理DOT文件。其中的一些,例如dotneatotwopicirco, fdpsfdp,会读取DOT文件并将之渲染成为图形格式。其它的一些,比如gvprgcaccyclicccompssccmaptred,可以读取DOT文件并对它代表的图形进行一些处理。类似于GVeditleftydottygrappa则提供了交互式的界面。以上程序大部分都包括在了Graphviz软件包中。

语法

图形类别

无向图

Dot语言 
一张无向图

在最简单的应用中,DOT语言可以用来描述一张无向图。无向图显示了对象间最简单的关系,例如人之间的友谊。使用关键字graph开始一张无向图的定义,并用大括号包含要描述的节点,双连字号(--)被用来描述节点间的关系。另外,一行的末尾需要加上分号(;)。

  graph graphname {      a -- b -- c;      b -- d;  } 

有向图

Dot语言 
一张有向图

类似于无向图,DOT语言也可以用来描述一张有向图,类似于流程图树状图。其语法与无向图相似,但要在图的最开始使用关键字'digraph',并用箭头(->)表示节点直接的关系。

 digraph graphname {     a -> b -> c;     b -> d; } 

属性

Dot语言 
一张有属性的图

DOT语言中,可以对节点和边添加不同的属性。这些属性可以控制节点和边的显示样式,例如颜色,形状和线形。可以在语句和句尾的分号间放置一对方括号,并在其中中放置一个或多个属性-值对。多个属性可以被逗号和空格(, )分开。节点的属性被放置在只包含节点名称的表达式后。

 graph graphname {      // label属性可以改变节点的显示名称      a [label="Foo"];      // 节点形状被改变了      b [shape=box];      // a-b边和b-c边有相同的属性      a -- b -- c [color=blue];      b -- d [style=dotted];  } 

注释

DOT语言支持C语言C++风格的单行与多行注释。另外,也支持Shell脚本风格的以#开头的注释。

 // 单行注释  /* 多行      释 */  # 如此的行也会被忽略。 

一个简单的例子

以下是一个描述了乙烷化学键结构的示例脚本。这是一个无向图,包括了上述解释的节点属性。

 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];  } 

支持的程序

DOT语言定义了图,但没有提供渲染图的工具。这里列出了一些可以用来渲染,查看与修改DOT图的程序:

  • Graphviz - 一组用来修改和渲染图的软件库和程序。
  • OmniGraffle 可以导入DOT语言的一个子集,生成一个可编辑的文档,但转换结果不能被导出成为DOT文件。

限制

Dot语言 
一张被不当渲染的图片

可以用DOT定义图形的位置细节,虽然不是所有实现了DOT语言的工具都可以适当的处理位置属性。因此,取决于所使用的工具,用户必须依赖于自动布局算法(可能造成非预期的输出)或者繁琐的手工布局节点属性。

例如:

digraph g { node [shape=plaintext] A1 -> B1 A2 -> B2 A3 -> B3  A1 -> A2 [label=f] A2 -> A3 [label=g] B2 -> B3 [label="g'"] B1 -> B3 [label="(g o f)'" tailport=s headport=s]  { rank=same; A1 A2 A3 } { rank=same; B1 B2 B3 }  } 
Dot语言 
在移动了标签和箭头并改变子脚本的字体大小之后,图形变得正常了

上图有两个问题。右边的方形不是完美的正方形,而且标签(g o f)的位置有问题。

这些问题可以用Inkscape或其它的SVG编辑器修正。在某些情况下,也可以利用pos属性定义位置来修正这样的问题。

参见

外部链接

Tags:

Dot语言 语法Dot语言 一个简单的例子Dot语言 支持的程序Dot语言 限制Dot语言 参见Dot语言 外部链接Dot语言文件扩展名电子计算机

🔥 Trending searches on Wiki 中文:

怪異與少女與神隱武则天各国家和地区人口列表黃國昌歡迎來到實力至上主義的教室夢想成為魔法少女地獄樂愛·回家之開心速遞邱澤出口夏希咒術迴戰角色列表黑執事淚之女王嘉庆帝KOZ娛樂帝國浩劫:美國內戰&TEAM換乘戀愛3郭東延女陰印度一级方程式赛车2024年湯姆斯盃薛定谔猫草榴社区尹普美GIVEN 被贈與的未來鲁迅周恩来張藝興機動戰士GUNDAM SEED系列角色列表中華民國媒體列表Google李宗瑞性侵案多曼拉朱·古凯什姜大衞賀軍翔葉乃文TWICE綾波零鄧紫棋贾跃亭地震列表美國史美倫神耆小子羅子溢蔡詩芸赵露思台灣積體電路製造台灣YouTube頻道訂閱人數排行榜臺灣地震列表JR福知山線出軌事故完全省錢戀愛手冊胡一天周峻纬青春18×2 通往有你的旅程葬送的芙莉蓮角色列表天道 (台灣電視劇)金·卡戴珊2024年花蓮地震低谷医生朴敏英蔣萬安幕府將軍 (2024年電視劇)韩国电视剧列表AUKUS重庆市毛里求斯杨利伟吴磊周也释迦牟尼伊斯兰教古天樂邱垂正朴成焄🡆 More