04.箭头图形

在有向图中,边缘(Edge)是有指向的。指向箭头的样式可以通过 dir,arrowhead,arrowtail 来指定。

dir属性

Edge的dir属性指定了有向图的箭头指向,取值可以为 forword,back,both,none

digraph g{
	a->b [dir=forword]
	c->d [dir=back]
	e->f [dir=both]
	g->h [dir=none]
}

001

arrowhead属性

Edge的arrowhead属性指定箭头头部的图形。当且仅当Edge的dirforward或者both时才会生效。箭头形状取值参见: 箭头形状

digraph g{
	graph [rankdir=LR]
	a->b [dir=forword;arrowhead=box]
}

002

arrowtail属性

Edge的arrowtail属性指定箭头尾部的图形。当且仅当Edge的dirback或者both时才会生效。箭头形状取值参见: 箭头形状

digraph g{
	graph [rankdir=LR]
	a->b [dir=both;arrowhead=box;arrowtail=diamond]
}

003

箭头形状

箭头样式的抽象语法如下:

arrowname 	: 	aname [ aname [ aname [ aname ] ] ]
aname 	: 	[ modifiers ] shape
modifiers 	: 	[ 'o' ] [ side ]
side 	: 	'l'
	| 	'r'
shape 	: 	box
	| 	crow
	| 	curve
	| 	icurve
	| 	diamond
	| 	dot
	| 	inv
	| 	none
	| 	normal
	| 	tee
	| 	vee

原始箭头形状

原始箭头形状参见: Arrow Shapes

arrowheadarrowtail属性每个可以指定四个箭头形状,多个箭头形状的顺序从指向位置开始,依次排列。none也会占用空间。

digraph g{
	graph [rankdir=LR]
	a->b [dir=back;arrowtail=boxdiamondnonevee;]
}

004

示例中的boxdiamondnoneveebox , diamond , none , vee 四种箭头的组合

裁剪

箭头可以被裁剪,裁剪样式包含如下三项:

  • o - 空心样式
  • l - 保留箭头指向左边的部分
  • r - 保留箭头指向右边的部分

digraph g{
	graph [rankdir=LR]
	a->b [dir=forword;arrowhead=lboxordiamondnonevee;]
}

005

lboxordiamondnonevee 拆分为 l , box , o , r , diamond , none , vee

每种箭头可以裁剪的内容如下:

Modifierboxcrowcurvediamonddoticurveinvnonenormalteevee
l/rXXXXXXXX
oXXXXX