dot 语言 graphviz

Graphviz (Graph Visualization Software的缩写)是一个由AT&T实验室启动的开源工具包,用于绘制DOT语言脚本描述的图形。它也提供了供其它软件使用的库。Graphviz是一个自由软件,其授权为Common Public License。其Mac版本曾经获得2004年的苹果设计奖。Graphviz包括很多命令行工具,dot命令是一个用来将生成的图形转换成多种输出格式的命令行工具,其输出格式包括PostScript,PDF,SVG,PNG,含注解的文本等等。neato命令用于spring model的生成(在Mac OS版本中称为energy minimized)。twopi命令用于放射状图形的生成。circo命令用于圆形图形的生成。fdp命令另一个用于生成无向图的工具。dotty命令一个用于可视化与修改图形的图形用户界面程序。lefty命令是一个可编程的(使用一种被EZ影响的语言[4])控件,它可以显示DOT图形,并允许用户用鼠标在图上执行操作。Lefty可以作为MVC模型的使用图形的GUI程序中的视图部分。 DOT语言是一种文本图形描述语言。它提供了一种简单的描述图形的方法,并且可以为人类和计算机程序所理解。DOT语言文件通常是具有.gv或是.dot的文件扩展名。本文将主要介绍从源代码安装Graphviz工具以及dot命令的使用方式

Graphviz (Graph Visualization Software的缩写)是一个由AT&T实验室启动的开源工具包,用于绘制DOT语言脚本描述的图形。它也提供了供其它软件使用的库。Graphviz是一个自由软件,其授权为Common Public License。其Mac版本曾经获得2004年的苹果设计奖。Graphviz包括很多命令行工具,dot命令是一个用来将生成的图形转换成多种输出格式的命令行工具,其输出格式包括PostScript,PDF,SVG,PNG,含注解的文本等等。neato命令用于spring model的生成(在Mac OS版本中称为energy minimized)。twopi命令用于放射状图形的生成。circo命令用于圆形图形的生成。fdp命令另一个用于生成无向图的工具。dotty命令一个用于可视化与修改图形的图形用户界面程序。lefty命令是一个可编程的(使用一种被EZ影响的语言[4])控件,它可以显示DOT图形,并允许用户用鼠标在图上执行操作。Lefty可以作为MVC模型的使用图形的GUI程序中的视图部分。 DOT语言是一种文本图形描述语言。它提供了一种简单的描述图形的方法,并且可以为人类和计算机程序所理解。DOT语言文件通常是具有.gv或是.dot的文件扩展名。本文将主要介绍从源代码安装Graphviz工具以及dot命令的使用方式。



常用参数
格式:dot -T -o



输入文件是,生成的格式由指定,生成的文件是



其中-T包括:



-Tps (PostScript),



-Tsvg -Tsvgz (Structured Vector Graphics),



-Tfig (XFIG graphics),



-Tmif (FrameMaker graphics),



-Thpgl (HP pen plotters),



-Tpcl (Laserjet printers),



-Tpng -Tgif (bitmap graphics),



-Tdia (GTK+ based diagrams),



-Timap (imagemap files for httpd servers for each node or edge that has a non-null “href” attribute.),



-Tcmapx (client-side imagemap for use in html and xhtml).



下面简单介绍下DOT语言的语法:



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



有向图 :类似于无向图,DOT语言也可以用来描述一张有向图,类似于流程图和树状图。其语法与无向图相似,但要在图的最开始使用关键字’digraph’,并用箭头(->)表示节点直接的关系。
digraph graphname {
a -> b -> c;
b -> d;
}
属性 :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脚本风格的以#开头的注释。
// 单行注释
/* 多行

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



使用示例
示例一 从源代码安装Graphviz
[root@jfht setup]# wget “http://www.graphviz.org/pub/graphviz/stable/SOURCES/graphviz-2.26.3.tar.gz”



https://blog.csdn.net/xiongwei1209/article/details/6774191



2.使用:



  



$ cat ./test.gv
digraph g {
label=test
 a -> b
b -> c
b -> d
{ rank=same c d }
}


rank=same c d 在同一层。


$ dot -Tpng ./test.gv -o test.png




  1. 设置 a b c 同一层



    {rank = same c, d}



需要注意的地方:



1.使用引号



上文中的a, b, c 除了作为程式内的识别字以外,也会成为节点的显示名称(label)。不过如果这名称中混了中文或夹了空格、中划线(-),Graphviz 就有可能搞错你的意思。



为防不必要的误解,所以平常最好都用英文引号括住。



$ cat ./test.gv
digraph g {
label=test
“a-c” -> “数据中心”
“数据中心” -> “华东 数据中心”
“数据中心” -> “华南 数据中心”
}
$ dot -Tpng ./test.gv -o test.png



3.rankdir=LR;



$ cat ./test.gv
digraph g {
label=test
“a-c” -> “数据中心”
“数据中心” -> “华东 数据中心”
“数据中心” -> “华南 数据中心”
rankdir=LR;
}
图像方向,LR 从左到右



https://blog.csdn.net/kozazyh/article/details/81748921



DOT语言的语法:



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



有向图 :类似于无向图,DOT语言也可以用来描述一张有向图,类似于流程图和树状图。其语法与无向图相似,但要在图的最开始使用关键字’digraph’,并用箭头(->)表示节点直接的关系。
digraph graphname {
a -> b -> c;
b -> d;
}
属性 :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脚本风格的以#开头的注释。
// 单行注释
/* 多行

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



https://blog.csdn.net/weixin_34406061/article/details/92912841


Category lang