相关问题如下:
考虑以下dot文件:
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)
应该在右边缘的左侧。
相关问题如下:
考虑以下dot文件:
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)
应该在右边缘的左侧。
正如您所发现的那样,graphviz不允许您选择水平标签位置,因此所有解决方案都略有些技巧。
尝试 #1: marapet发布的两个解决方案(在这里)
labelangle和labeldistance的技巧不能很好地适应不同长度的标签文本(您必须重新计算新的距离/角度数)。
splines=false的技巧在节点之间的边数>节点数时效果不佳(您最终会得到重叠的边)。
尝试 #2: 使用xlabels和anchors创建曲线边缘
这使用了graphviz的一个相对较新的功能,xlabel(它在决定节点/边缘的坐标之后放置标签)。 ports特性用于创建曲线边缘。标签上的填充通过空格字符实现。
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) "];
}
.
)或Unicode表中的其他字符。这样可能会被布局引擎识别为一个包含空格的字符:xlabel=". mytext"
或xlabel="mytext ."
。 - AlexGrafe