从graphviz对输出边进行分组

从graphviz对输出边进行分组,graphviz,Graphviz,我试图画一个有两种边的图,我希望这两种边尽可能从相反的边链接到每个节点。也就是说,如果类型A的边从左侧进入,我希望类型B的所有边都从右侧退出。我知道我可以指定指南针的方向,但我希望graphviz能够改变这个方向,以最小化图形混乱 这是可能的还是类似的情况?如果不想指定指南针点,则可能不想使用和 如果您使用的是dot,您仍然可以通过使用samehead和sametail属性来实现类似的功能。参考文献: 具有相同头部和相同形状的边 相同的头值针对相同的目标 指头 这使您可以对传出边和传入边进行分组

我试图画一个有两种边的图,我希望这两种边尽可能从相反的边链接到每个节点。也就是说,如果类型A的边从左侧进入,我希望类型B的所有边都从右侧退出。我知道我可以指定指南针的方向,但我希望graphviz能够改变这个方向,以最小化图形混乱


这是可能的还是类似的情况?

如果不想指定指南针点,则可能不想使用和

如果您使用的是dot,您仍然可以通过使用
samehead
sametail
属性来实现类似的功能。参考文献:

具有相同头部和相同形状的边 相同的头值针对相同的目标 指头

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

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;
}


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

我当前的解决方案是用边替换旧节点,从而创建两个节点-图中每个“端口”对应一个节点。然后,我可以在这些“端口节点”之间创建边。代替

node1 -> node2 [ sametail="b", samehead = "a" ]
我写

node1_a -> node1_b [ dir=none, style=bold ]
node2_a -> node2_b [ dir=none, style=bold ]

node1_a -> node2_b // if I got head and tail right :-)

虽然我没有为我的“节点”设置框,但就我的目的而言,这可以正常工作。

是的,我已经尝试过了,但它仍然不能满足我的需要。我会看看是否能在一个单独的网页上对我想要实现的目标做一个更详细的解释。