graphivz绘图


Graphviz CMD命令

命令之间的差别

命令 使用用途
dot 显然的图具有明确的方向性
neato 渲染的图缺乏方向性
twopi 渲染的图采用放射性布局
fdp 渲染的图缺乏方向性
sfdp 渲染大型的图图片缺乏方向性

下面是有向图的不同渲染的结果:
dot渲染结果:
dot
neato渲染结果:
neato
fdp渲染结果
这里写图片描述
sfdp渲染结果:
这里写图片描述
twopi渲染结果:
这里写图片描述

参数说明

在Graphviz中,若您不指定-T参数,Graphviz并不会自动猜测您想要产生什么格式,只会以预设格式渲染。可选格式相当多,包括(但不限于)jpg、png、svg等,全部列表可见官网说明页的最下方。
-o 可让您指定储存档案的档名。如果您不用-o 选项指定输出档名,Graphviz 则会将结果输出到标准输出上(图片格式输出到标准输出就是乱码的二进制文件)。

dot input.dot -T png -o output.txt

使用语法

画图类型

有向图:digraph,节点关系为”->”
无向图:digraph,节点关系为将有向图中箭头设置为none。[dir=none] 或者使用graph则图之间用-- 就没有箭头。
注释:采用c++的注释方式/**/和//
如果是全连接的图不用分别制定连接接点,而是直接一起指定。
推荐(逗号分隔)方式

digraph G{
    {a,b,c}->{d,e,f}
}

或者(不推荐)

digraph G{
    {a b c}->{d e f}
}

这里写图片描述

设置属性

有了前面介绍过的技巧,所有图面关系都可以顺利地绘制出来。
然而,通常我们画图的时候,还会对图片做一些特别的处理。好比说把字加粗、把图变色、把标签或连接线的外型改变、把某些节点水平对齐……诸如此类。
要控制这些东西,就要用到属性。
属性有四种:
1. 用在节点上(Node, N)
2. 用在线段上(Edge, E)
3. 用在根图片上(Graph, G)
4. 用在子图片上(Cluster subgraph, C)
您可以阅读手册中的表,判断哪些属性能用在哪些地方。
那么,属性要怎么用呢?

属性的套用

如果要设定根图片或子图片的属性,得像前面范例中所示的那样,在图片的大括号范围内指定.属性名称=值这样就行了。
对于节点(node) 的属性,有以下几种指定法:
1. 节点名[节点属性名=值];
2. 节点名[节点属性名=值,节点属性名=值];
3. node [节点属性名=值,节点属性名=值];
属性指定的语句必须要被中括号括起。当一次指定多值时,需用英文逗点隔开。
第三行中的node 是个关键字,用来代称「图片范围内」所有「还没创建」的节点,或者您也可将它理解为:在当前大括号的范围内,所有尚未创建节点的属性预设值,会被这个语句给变更。
线段(edge)的属性指定,与节点属性指定方式很类似:

  1. 节点名->节点名[线段属性名=值];
  2. 节点名–节点名[线段属性名=值,线段属性名=值];
  3. edge [线段属性名=值,线段属性名=值];
    其中edge 是关键字。
    这边顺便补充一个关于线段的观念:有些线段相关的属性,具有head值与tail值。而这边说的head 与tail,得将它想像成一个「箭头」的形状(就像是「a -> b」这样)。
    对于线段来说,这个箭头指向的头部才是head。这可能和直觉上不一样,因为这边说的「Head」其实是两个节点中,后面的那一个。

常用的属性

  • shape:用来指定节点的形状,支持的形状如这里
  • color:设置节点的边框颜色,支持的颜色在这里
  • -fontsize:边框中的字体大小
  • fontcolor=边框中的字体颜色
  • style:设置风格,主要有:bold, dotted(虚线节点), filled例如:style=filled 后能设置填充色fillcolor=red
  • 箭头风格,这里
  • width:设置节点的宽度。
  • height:设置节点的高度

Graphviz问答

  1. 问:如何使用左右布局?
    答:在代码中加入rankdir=”LR”(上下布局为TB)

参考链接

Graphviz使用教程

猜你喜欢

转载自blog.csdn.net/bleedingfight/article/details/81519086