我的问题与这个问题基本相同,但给出的答案对我不起作用。
这里是一个示例渲染(源代码)
compound=true;
overlap=scalexy;
splines=true;
layout=neato;
边缘存在一些不必要的重叠,但这并不算太糟糕,主要问题是所有空间都被浪费了。
我尝试设置 sep=-0.7;
,结果如下图所示。
间距好多了,但现在与节点存在一些重叠。我尝试使用不同的 overlap
参数进行实验,但这是唯一一个可以提供稍微可接受结果的参数。
我曾尝试切换到 fdp 布局,并全局设置弹簧常数属性 K
,但我只得到像这样子的东西:
源代码都很简单,就是一些类似 a--b--c
的东西,没有花哨的技巧。
我想让所有的边缘尽可能缩短(最小值为上限)前提是该调整不会引入任何新的重叠,而这就是 sep
完全失败的地方。这似乎对于一个布局引擎来说并不难。Graphviz 套件能否实现?我不介意更改渲染软件,但不想按节点或边缘逐个注释源码。
我的理想结果是最小化边长的偏差,以每个节点为单元考虑,即每个节点的边除必要的例外外都具有相等的长度,但这只是一厢情愿。首要任务是在不引入重叠的约束下减少每条边的长度。
我将接受部分解决方案,但它们必须是完全自动的和开源的。
如何实现?谢谢。