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 |