https://github.com/xiazemin/graphviz
https://www.jianshu.com/p/e44885a777f0
}"]; //我也是一个节点, 定义了3个属性 }"]; }"]; }"]; }"]; }"]; }"];
node2[label="{
node3[label="{
node4[label="{
node5[label="{
node6[label="{
node7[label="{
//建立节点之间的联系
node0:f0 -> node1:n;
node0:f1 -> node2:n;
node0:f2 -> node3:n;
node0:f5 -> node4:n;
node0:f6 -> node5:n;
node2:p -> node6:n;
node4:p -> node7:n;
}
```
定义结构
一个简单的数据结构示例
digraph g {
node[shape=record,height=.1]; //定义了下面的node样式
node0[label="
node1[label="
node2[label="
node3[label="
node4[label="
node5[label="
node6[label="
node7[label="
node8[label="
node9[label="
"node0":f2 -> "node1": f1; //node0的第三个属性连到node1的第二个属性
"node1":f0 -> "node2": f1;
"node1":f1 -> "node3": f2;
"node3":f0 -> "node4": f0;
"node3":f1 -> "node5": f1;
"node3":f2 -> "node6": f2;
"node6":f1 -> "node7": f1;
"node7":f1 -> "node8": f0;
"node2":f2 -> "node9": f1;
}
```
使用node定义结构, node[shape=record]
使用subgraph定义子图
digraph g {
//定义一个子图, subgraph定义子图
subgraph cluster0 {
node[style=filled, color=white]; //定义子图中的节点的样式
style=filled; //定义子图的样式
color=red; //定义子图的填充色
a0->a1->a2->a3; //定义节点, 及节点之间的关系
label="process #1"; //定义子图的标签
}
//又定义一个子图
subgraph cluster1 {
node[style=filled, color=white];
style=filled;
color=blue; //定义子图的填充色
b0->b1->b2->b3; //定义节点及其关系
label="process #2";
labelColor=white;
}
//定义子图之间的关系
start->a0;
start->b0;
a1->b3;
b2->a3;
a3->end;
b3->end;
}
```
有向图
digraph g {
//edge[style=dashed]; //定义边的样式, 虚线
node[peripheries=2, style=filled, color="#eecc80"];
a->b [color=red, style=dashed]; //定义边的颜色, 红色 (b和方括号之间必须有空格)
b->c; //箭头, 三角形; 箭尾, 菱形
b->d [arrowhead=box]; //箭头, 长方形
b->e [dir=none]; //没有箭头
d->f [dir=both]; //双向箭头
f->h [label=go]; //定义edge的标签
f->k [arrowhead=diamond]; //更改箭头形状 (更多箭头形状请参考官方文档: http://www.graphviz.org/content/arrow-shapes)
k->y [headlabel="哈哈", taillabel="洗洗"];
}
无向图
graph g {
edge[style=dashed]; //定义边的样式, 虚线
a -- b [color=red]; //定义边的颜色, 红色 (b和方括号之间必须有空格)
}