1

我有一个程序可以自动生成表示系统结构的点图。该系统由用户使用一组方程定义。

我想强制点显示节点之间的直边正交边。只要满足这两个要求,节点的位置就可以在任何地方。

例如,我想防止以下代码生成的边角:

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

4

0 回答 0