Graphviz:在另一边放置边缘标签(II)

Hot*_*hke 16 graphviz

相关问题是:

Graphviz:将边缘标签放在另一侧

如何在graphviz中将边缘标签放置在边缘上

考虑以下点文件:

digraph {
0 -> 1 [ len=2, label="(1, 0)"];
0 -> 1 [ len=0.5, dir=none, weight=10];
1 -> 0 [ len=2, label="(0, -1)"];
}
Run Code Online (Sandbox Code Playgroud)

给出以下结果:

在此输入图像描述

如何设法获得对称版本?(0,-1)应该留在右边的egde.

Ric*_* EB 20

正如您所知,graphviz不允许您选择水平标签放置,因此所有解决方案都略显苛刻.

尝试#1:marapet发布的两个解决方案(这里)

  1. labelangle和labeldistance技巧不能很好地适应不同长度的标签文本(你必须重新计算新的距离/角度数).

  2. 如果节点之间的边数>节点数(最终重叠边缘),则splines = false技巧不能很好地工作.

尝试#2:xlabels和锚点创建弯曲边缘

这使用了graphviz的一个相对较新的特性,xlabel(将标签放置在节点/边缘的坐标之后).的端口功能被用来创建弯曲边缘.标签上的填充是用空格字符实现的.

GV

digraph {
forcelabels=true;

    0:sw -> 1:nw [ dir=forward, xlabel="  (1, 0)  "];
    0 -> 1 [dir=none];
    1:ne -> 0:se [ dir=backward, xlabel= "  (0, -1)  "];

}
Run Code Online (Sandbox Code Playgroud)

我相信你需要graphviz版本> 2.29来使用xlabel.