对 graphviz 的输出边进行分组

Ket*_*til 5 graphviz

我正在尝试绘制一个具有两种边的图,并且我希望这两种边尽可能地从相对侧链接到每个节点。即,如果类型 A 的边缘从左侧进入,我希望类型 B 的所有边缘都从右侧退出。我知道我可以指定指南针方向,但我希望 graphviz 能够对此进行切换以最大程度地减少图形混乱。

这是可能的吗?或者类似的事情?

mar*_*pet 5

如果您不想指定罗盘点,您可能也不想使用标签端口等 HTML 。

如果您使用 dot,您仍然可以通过使用sameheadsametail属性来实现类似的效果。来自参考:

具有相同头部和相同相同头部值的边瞄准头部上的同一点

这使您可以对传出和传入边缘进行分组。这是一个简单的例子:

digraph g{
    rankdir=LR;
    edge[samehead=h1, sametail=t1];
    a1->b->c1;
    a2->b->c2;
    edge[samehead=h2, sametail=t2];
    a3->b->c3;
    a4->b->c4;
}
Run Code Online (Sandbox Code Playgroud)

图形可视化输出

当然,这只是对边的头和尾进行分组,并不能保证不同类型的边具有相反的边。