26

相关问题是:

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

给出以下结果:

在此处输入图像描述

我怎样才能获得对称版本?(0,-1)应该在右边缘的左边。

4

1 回答 1

29

正如您所发现的,graphviz 不允许您选择水平标签放置,因此所有解决方案都有些 hacky。

尝试 #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)  "];

}

我相信您需要 graphviz 版本 >2.29 才能使用 xlabel。

于 2013-09-09T12:31:31.560 回答