代码之家  ›  专栏  ›  技术社区  ›  l0b0

Graphviz:在另一侧放置边缘标签

  •  19
  • l0b0  · 技术社区  · 14 年前

    这可能与 How to place edge labels ON edge in graphviz dot -Teps g.dot > g.eps :

    graph triple {
        node [shape=box]; User; Object; Tag;
        node [shape=diamond,style=filled]; Triple;
        {
            User -- Triple [label = "1"];
            Object -- Triple [label = "1"];
        }
        {
            rank=same;
            User;
            Object;
        }
        Triple -- Tag [label="n"];
    }
    

    我希望结果更加对称,将User和Triple之间的标签放在图的左侧。

    2 回复  |  直到 7 年前
        1
  •  8
  •   marapet    14 年前

    下面是第二个解决方法 splines=false 和双边缘:

    graph {
    splines=false;
    node [shape=box]; User; Object; Tag;
    node [shape=diamond,style=filled]; Triple;
        {
            User   -- Triple [label = "1"];
            User   -- Triple [label = ""];
            Object -- Triple [label = ""];
            Object -- Triple [label = "1"];
        }
        {
            rank=same;
            User;
            Object;
        }
        Triple -- Tag [label="n"];
    }
    

    alt text

        2
  •  28
  •   marapet    14 年前

    无法使用graphviz手动放置边缘标签。

    但是,您可以使用 headlabel , labeldistance labelangle

    graph triple {
    node [shape=box]; User; Object; Tag;
    node [shape=diamond,style=filled]; Triple;
        {
            User   -- Triple [headlabel = "1", labeldistance=2.5, labelangle=20];
            Object -- Triple [headlabel = "1", labeldistance=2.5, labelangle=-20];
        }
        {
            rank=same;
            User;
            Object;
        }
        Triple -- Tag [label="n"];
    }
    

    输出:

    graphviz output