按点对边进行分组(Graphviz)

按点对边进行分组(Graphviz),graphviz,dot,Graphviz,Dot,是否有一种方法可以将点/图形中的边组合成一条总线,同时仍然磨损节点附近的边 例如: 更改此选项: graph my_graph { rankdir=LR A -- B; A -- B; A -- B; A -- B; A -- B; A -- B; A -- B; A -- B; A -- B; A -- C; } 变成这样: 一种方法是使用虚拟[shape=point]节点,如下所示: graph my

是否有一种方法可以将点/图形中的边组合成一条总线,同时仍然磨损节点附近的边

例如:

更改此选项:

graph my_graph {
    rankdir=LR
    A -- B;
    A -- B;
    A -- B;
    A -- B;
    A -- B;
    A -- B;
    A -- B;
    A -- B;
    A -- B;
    A -- C;
}

变成这样:


一种方法是使用虚拟
[shape=point]
节点,如下所示:

graph my_graph {
    rankdir=LR;
    {rank = same; B; C;}
    aa [ shape=point ];
    bb [ shape=point ];
    A -- aa;
    A -- aa;
    A -- aa;
    A -- aa;
    A -- aa;
    A -- aa;
    A -- aa;
    A -- aa;
    A -- aa;

    aa -- bb [ penwidth=4.0];

    bb -- B;
    bb -- B;
    bb -- B;
    bb -- B;
    bb -- B;
    bb -- B;
    bb -- B;
    bb -- B;
    bb -- B;

    A -- C;
}

但这也有一些缺点:

  • 它使源文件中的边数增加了一倍,并使其难以管理
  • 如果您有头部和尾部标签,则需要相应地放置它们
  • 它会弄乱节点的等级,因此您必须手动调整所有其他节点
  • 磨损的端部仍然是圆形的,占用了很多空间。通过设置属性,这可能是可以解决的,但我无法使其工作(似乎两个节点之间的多条边都不会始终显示为样条曲线,无论
    样条曲线
    的值是多少)
  • 另一种选择: 还有一个属性,但这将只收集指向同一点的线。它不会1)磨损端部或2)增加线厚度以表示母线:

    graph my_graph {
        rankdir=LR
        concentrate=true;
        A -- B;
        A -- B;
        A -- B;
        A -- B;
        A -- B;
        A -- B;
        A -- B;
        A -- B;
        A -- B;
        A -- C;
    }