GraphViz,对相同的边缘进行分组

nam*_*ame 20 graphviz edges

digraph G {
  a -> b [ label = "foo" ];
  a -> b [ label = "bar" ];
}
Run Code Online (Sandbox Code Playgroud)

这将在'a'和'b'节点之间创建两条边.有没有办法只有一条边(将它们分组)?

Jas*_*son 41

"严格"关键字可能会对您有所帮助.

strict digraph G {
  a -> b [ label = "foo" ];
  a -> b [ label = "bar" ];
}
Run Code Online (Sandbox Code Playgroud)

这将结合边缘.但我相信它只会应用第一个标签.


RTB*_*ard 7

我认为这实际上取决于你想要的产量.一种可能性是:

digraph G {
   graph [ splines = false ]
   a -> b [ label = "foo" ];
   a -> b [ label = "bar" ];
 }
Run Code Online (Sandbox Code Playgroud)

不使用样条线的地方用直线段绘制边缘,因此不会在视觉上区分重复的边缘.

在你理想的输出中,单边是什么样的,因为它有两个不同的标签?

  • 你说的没错.您的目标超出了graphviz的节点/边缘处理功能,并且需要某种预处理来将重复项合并到您正在寻找的表单中.当然,对于像示例这样的较小图形,您可以使用样条线选项对其进行伪造. (2认同)