目录
正常写法
digraph startgame {
node [fontname="SimHei"]; // 设置节点属性,这里设置字体为黑体
n1[label="TCP Socket" shape=box];
n2[label="Data" shape=diamond];
n3[label="h2\nParse Data" shape=ellipse];
n4[label="h2\nEvents" shape=diamond];
n5[label="gethy\nUpdate\nBuffers" shape=ellipse];
n6[label="gethy\nUParse\nBuffers" shape=ellipse];
n7[label="gethy\nEvents" shape=diamond];
n8[label="External\nHandlers" shape=box];
rankdir=TB;
{rank=same; n1;n2;n3;n4;}
{rank=same; n5;n6;n7;n8;}
n1->n2->n3->n4;
// 正常写法
n5->n6->n7->n8[dir="back"];
// 调整后的写法
// n8->n7->n6->n5[dir="back"];
n4->n5;
}
正常写法根据案例写法做调整
案例写法
digraph startgame {
node [fontname="SimHei"]; // 设置节点属性,这里设置字体为黑体
n1[label="TCP Socket" shape=box];
n2[label="Data" shape=diamond];
n3[label="h2\nParse Data" shape=ellipse];
n4[label="h2\nEvents" shape=diamond];
n5[label="gethy\nUpdate\nBuffers" shape=ellipse];
n6[label="gethy\nUParse\nBuffers" shape=ellipse];
n7[label="gethy\nEvents" shape=diamond];
n8[label="External\nHandlers" shape=box];
rankdir=TB;
{
rank=same;
n1 -> n2 [arrowhead="none"];
n2 -> n3;
n3 -> n4 [arrowhead="none"];
}
{
rank=same;
n8 -> n7[dir="back"];
n7 -> n6[arrowhead="none"];
n6 -> n5[dir="back"];
}
n4 -> n5;
}
案例分析
- rankdir=TB;的情况下, rank=same节点是从左到右排列
- 节点n4->n5,所以n4和n5会在同一竖线上。
根据分析创造一个蛇形节点
digraph startgame {
{rank=same; a->b->c->d;}
{rank=same; h->g->f->e[dir="back"]}
d->e;
{rank=same; i->j->k->l;}
{rank=same; p->o->n->m[dir="back"];}
l->m;
h->i;
}