用点强制直线和正交边

时间:2018-08-27 14:39:08

标签: graph-theory graphviz dot orthogonal edge-list

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

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

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

digraph R {

  graph [splines=ortho, nodesep=1]
  node [shape=record];

   rA -> sA;
   sA -> vB;
   t  -> rA;
   uB -> vB;
   wB -> u;
   wB -> tA;

}

enter image description here

我发现实现这一目标的一种方法是使用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;

}

enter image description here

但是,使用rank属性并不能解决我的问题,因为对于 any 图来说,自动执行此操作非常困难。为每个节点分配等级(影响节点放置)的逻辑将非常复杂(图形可能会变得很大)。我想知道是否存在另一种不需要使用rank属性的输出的方法。

0 个答案:

没有答案