我有一个程序,可以自动生成代表系统结构的点图。该系统由用户使用一组方程式定义。
我想强制点仅在节点之间显示笔直的和正交边缘。只要满足这两个要求,节点的位置就可以位于任何地方。
例如,我要防止以下代码生成的边角:
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
属性并不能解决我的问题,因为对于 any 图来说,自动执行此操作非常困难。为每个节点分配等级(影响节点放置)的逻辑将非常复杂(图形可能会变得很大)。我想知道是否存在另一种不需要使用rank
属性的输出的方法。