【发布时间】:2013-10-18 23:38:48
【问题描述】:
我有一组 GraphViz 节点,例如:
digraph {
A->B;
A->C;
A->D;
}
但是B、C和D是按时间顺序发生的!
如果有某种方法可以指示每个节点应该出现的垂直级别(其中级别的数量可能事先未知),那就太好了。
有没有人想过如何做到这一点?
【问题讨论】:
我有一组 GraphViz 节点,例如:
digraph {
A->B;
A->C;
A->D;
}
但是B、C和D是按时间顺序发生的!
如果有某种方法可以指示每个节点应该出现的垂直级别(其中级别的数量可能事先未知),那就太好了。
有没有人想过如何做到这一点?
【问题讨论】:
让节点显示在与其他节点不同的等级(垂直级别)上的一个选项是添加不可见边。
为这些节点分配相同的group 表示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;
}
【讨论】: