节点的形状可以是以下任意一种:
Record-based Nodes 记录节点Polygon-based Nodes 图形节点User-defined Nodes 用户自定义节点GraphViz支持html,node节点label内容可以是HTML标签
无需定义, 直接使用,即可生成节点
digraph g { node [shape = record,height=.1]; "node0" -> "node4"; "node0" -> "node1"; "node1" -> "node2"; "node1" -> "node3"; "node4" -> "node6"; "node4" -> "node5"; }也可以显式的定义节点
digraph g { node [shape = record,height=.1]; node0; node1; node2; node3; node4; node5; node6; "node0" -> "node4"; "node0" -> "node1"; "node1" -> "node2"; "node1" -> "node3"; "node4" -> "node6"; "node4" -> "node5"; }node label属性自定义node显示的内容
digraph g { node [shape = record,height=.1]; node0 [label="node0 第一个开始节点"]; node1; node2; node3; node4; node5; node6; "node0" -> "node4"; "node0" -> "node1"; "node1" -> "node2"; "node1" -> "node3"; "node4" -> "node6"; "node4" -> "node5"; }使用 <x> | 分割节点,展示多列内容
digraph g { node [shape = record,height=.1]; node0[label = "G\n开始节点"]; node1[label = "<f1> E|<f2> "]; node2[label = "<f0> |<f1> B|<f2> "]; node3[label = "<f1> F "]; node4[label = "<f0> |<f1> R|<f2> "]; node5[label = "<f0> |<f1> H|<f2> "]; node6[label = "<f0> |<f1> Y|<f2> y2 | <f3> y3 | <f4> y4 "]; "node0" -> "node4":f1; "node0" -> "node1":f1; "node1":f1 -> "node2":f1; "node1":f2 -> "node3":f1; "node4":f2 -> "node6":f3; "node4":f0 -> "node5":f1; }node shape值为 record 或者Mrecord 时, 节点就是记录节点,其内容由label定义。
record 正方型Mrecord 圆角正方型rankdir值不同时,分割行或者列相互转换,自已体会
// 用 | 分割多列 // 用 <x> 标记行的port值,箭头可指向其准确位置 // 用{ | } 分割多行 digraph g{ a1[shape="record" label="a|b|c|d"]; a2[shape="Mrecord" label="a|b|c|d"]; b1[shape="record" label="{a|b|c|d}"]; b2[shape="Mrecord" label="{<f1> a|<f2> b|<f3> c| <f4>d}"]; c[shape="Mrecord" label="<f1> c1|<f2> c2|<f3> c3| <f4>c4"] a1->a2; b1->b2:f3 c:f2->a2; }{} | 嵌套使用,行包含列,列包含行
// {} | 嵌套使用,行包含列,列包含行 digraph g{ c[shape="Mrecord" label="<f1> c1|<f2> c2|<f3> c3| <f4>c4"] d[shape="record" label="{<fa1> aa |<fa2> bb}|<f2> c2"]; e[shape="record" label="{ {<w1> aa1 |<w2> aaaa2} |<fa2> bb|<f2> c2}"]; c:f2->d:fa2; c:f3->e:w2; }节点label属性的内容可以是html,通常情况是一个tabel,可以指定其属性样式等html所支持的标签。
digraph { d[label=<<table><tr><td PORT="f2">11</td><td>22</td></tr><tr><td>33</td><td PORT="l3">44</td></tr></table>>]; c->d:f2; e->d:l3; }待补充
使用PostScript自定义节点的形状,有兴趣的同学可以参考官方文档说和案例