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

arrowhead属性
Edge的arrowhead属性指定箭头头部的图形。当且仅当Edge的dir为forward或者both时才会生效。箭头形状取值参见:
箭头形状
digraph g{
graph [rankdir=LR]
a->b [dir=forword;arrowhead=box]
}

arrowtail属性
Edge的arrowtail属性指定箭头尾部的图形。当且仅当Edge的dir为back或者both时才会生效。箭头形状取值参见:
箭头形状
digraph g{
graph [rankdir=LR]
a->b [dir=both;arrowhead=box;arrowtail=diamond]
}

箭头形状
箭头样式的抽象语法如下:
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
arrowhead和arrowtail属性每个可以指定四个箭头形状,多个箭头形状的顺序从指向位置开始,依次排列。none也会占用空间。
digraph g{
graph [rankdir=LR]
a->b [dir=back;arrowtail=boxdiamondnonevee;]
}

示例中的
boxdiamondnonevee是box,diamond,none,vee四种箭头的组合
裁剪
箭头可以被裁剪,裁剪样式包含如下三项:
- o - 空心样式
- l - 保留箭头指向左边的部分
- r - 保留箭头指向右边的部分
digraph g{
graph [rankdir=LR]
a->b [dir=forword;arrowhead=lboxordiamondnonevee;]
}

lboxordiamondnonevee拆分为l,box,o,r,diamond,none,vee。
每种箭头可以裁剪的内容如下:
| Modifier | box | crow | curve | diamond | dot | icurve | inv | none | normal | tee | vee |
|---|---|---|---|---|---|---|---|---|---|---|---|
| l/r | X | X | X | X | X | X | X | X | |||
| o | X | X | X | X | X |