【问题标题】:Graphviz: Place edge label on the other side (II)Graphviz:将边缘标签放在另一侧(II)
【发布时间】:2013-08-29 15:49:14
【问题描述】:

相关问题是:

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

给出以下结果:

如何获得对称版本? (0,-1) 应该在右边界的左边。

【问题讨论】:

    标签: graphviz


    【解决方案1】:

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

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

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

    2. splines=false 技巧在 节点之间的边 > 节点数(你最终得到 重叠边缘)。

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

    这使用了 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)  "];
    
    }
    

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

    【讨论】:

    • 在我的 dot (2.40) 版本中,似乎不再可以使用空格来控制标签位置。
    • @Nathaniel,以防它有助于尝试预先/附加一些几乎看不见的字符,例如点 (.) 或 Unicode 表中的其他内容。这可能会注册为布局引擎将使用的字符,包括您的空格:xlabel=". mytext" 或 xlabel="mytext ."。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 2010-10-24
    • 2018-06-04
    • 2017-06-17
    • 1970-01-01
    • 2020-02-09
    • 1970-01-01
    相关资源
    最近更新 更多