代码之家  ›  专栏  ›  技术社区  ›  naught101 Ari B. Friedman

如何在graphviz中的边上放置边标签

  •  32
  • naught101 Ari B. Friedman  · 技术社区  · 14 年前

    默认情况下,在Graphviz中,边标签仅放置在边的右侧。我正在寻找一种方法,将标签放置在边缘上,以边缘为中心(它仍然可读,因为我正在更改边缘的颜色)。

    有什么想法吗?

    2 回复  |  直到 14 年前
        1
  •  21
  •   d-cubed Tyler Rinker    9 年前

    如果这是海岬标签或尾标,您可以尝试设置 labeldistance 设置为零以强制在边缘上绘制标签,但据我所知,您指的是边缘标签(边缘中间的标签)。文件相当清楚地表明: 唇距

    您可能希望尝试的另一件事是创建一个透明的中间节点,该节点上有一个标签。它可能看起来像你想要的。。。但如果您严重依赖节点放置算法,那么创建这些“人造”节点可能是不可接受的。在这种情况下,我鼓励您加入graphviz开发人员并添加所需的功能;)说真的,这是非常令人满意的。

        2
  •  6
  •   Rohan Mukherjee    8 年前

    考虑在标签后面添加一些空白。这样可以避免与边箭头重叠,因为graphviz标签是右对齐的。这不是一个优雅的解决方案,我希望看到一个适当的标签对齐,但它可能会解决您的问题。

        3
  •  0
  •   alijandro    3 年前

    基于前两个答案,这里是我的解决方案使用 taillabel labeldistance ,透明边缘和空白。

    digraph G {
        rankdir=BT;
        A -> B [label="               ", minlen=3, headlabel="A overlay text\non edge", labeldistance=8];
        B -> A [color=white];
    }
    

    overlay

    如果两个节点之间有两条边,则无需使用透明边,只需使用空格来调整它们的相对位置,并使文本真正覆盖在边的顶部。

    digraph G {
        rankdir=BT;
        A -> B [label="                    ", minlen=3, headlabel="An overlay\ntext", labeldistance=6];
        B -> A [headlabel="       B to A", labeldistance=4];
    }
    

    overlay2