我有一个程序可以自动生成表示系统结构的点图。该系统由用户使用一组方程定义。
我想强制点显示节点之间的直边和正交边。只要满足这两个要求,节点的位置就可以在任何地方。
例如,我想防止以下代码生成的边角:
digraph R {
graph [splines=ortho, nodesep=1]
node [shape=record];
rA -> sA;
sA -> vB;
t -> rA;
uB -> vB;
wB -> u;
wB -> tA;
}
我发现实现这一点的一种方法是使用rank
属性。例如:
digraph R {
graph [splines=ortho, nodesep=1]
node [shape=record];
{ rank=same rA sA tA }
{ rank=same uB vB wB }
rA -> sA;
sA -> vB;
t -> rA;
uB -> vB;
wB -> u;
wB -> tA;
}
但是,使用该属性并不能解决我的问题,因为对于任何图形rank
都很难自动化。为每个节点分配等级(影响节点位置)的逻辑将非常复杂(图表可能变得非常大)。我想知道是否有另一种不需要使用属性的方式来获得这个输出。rank