我有一组GraphViz节点,其特点是:
digraph {
A->B;
A->C;
A->D;
}
但是B
、C
和D
按时间顺序发生!
如果有一种方法可以指示每个节点应该出现在哪个垂直层次上(层数的数量可能事先不知道),那将非常好。
有人对如何实现这一点有想法吗?
如果希望一个节点在垂直方向上与其他节点显示在不同的层级,则可以添加不可见边缘。将这些节点分配到相同的组
中,可以提示Graphviz尽可能在一条直线上进行布局。
例如:
digraph g{
A;
node[group=a];
B;C;D;
A -> B;
A -> C;
A -> D;
edge[style=invis];
B->C->D;
}
另一种选择是使用一个垂直方向的(不可见)节点线,然后通过在同一子图中定义相同等级的节点并使用rank=same
强制相同的等级:
digraph g{
{rank=same; l1[style=invis, shape=point]; A;}
{rank=same; l2[style=invis, shape=point]; B;}
{rank=same; l3[style=invis, shape=point]; C;}
{rank=same; l4[style=invis, shape=point]; D;E;F;}
A -> B;
A -> C;
A -> D;
edge[style=invis];
l1->l2->l3->l4;
}