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

时间:2013-08-29 15:49:14

标签: graphviz

相关问题是:

Graphviz: Place edge label on the other side

How to place edge labels ON edge in 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)"];
}

给出以下结果:

enter image description here

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

1 个答案:

答案 0 :(得分:20)

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

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

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

  2. splines = false技巧在数量上不能很好地工作     <节点之间的边>节点的数量(你最终得到     重叠的边缘)。

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

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

    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)  "];
    
    }
    

    我相信你需要graphviz版本&gt; 2.29来使用xlabel。