我注意到'fdp'生成的图形具有非常好的节点位置,用于我想要制作的图形。但是,节点之间的边缘是直线,有时会重叠节点。
我注意到'dot'渲染引擎非常善于保持边缘不重叠,直到它无法选择,甚至通过仅在方向不相似时优先选择十字形来使边缘清晰,因此可以很容易地识别它们。
我想使用fdp生成我的图形的节点坐标,然后使用dot来执行其余的工作。我希望那里有一个规范或至少现有的解决方案。
如果这是不可能的,我也想知道为什么。
您不能单独为节点和边使用不同的渲染引擎。但你的问题仍然有一个问题:
Graphviz中的每种图表类型都有一个特殊属性:splines。您可以在文件中设置splines=curved
或splines=polyline
,以便fdp
使用它们并尝试避免恼人的重叠。
graph {
splines=polyline;
a -- b;
b -- c;
a -- c;
d -- c;
e -- c;
e -- a;
}
附:许多布局使用节点和边缘信息来计算节点位置和边缘形状,因此它们按原样使用。当某人需要一个节点算法而另一个算法需要边缘时,这是非常罕见的情况,所以没有人实现它。也许这可能是一些脏兮兮的黑客,但不管怎样都不应该使用它。