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

l0b*_*0b0 21 dot graphviz

这可能与如何在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"];
}
Run Code Online (Sandbox Code Playgroud)

我希望通过在User的左侧放置User和Triple之间的标签来使结果更加对称.

mar*_*pet 26

使用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"];
}
Run Code Online (Sandbox Code Playgroud)

输出:

graphviz输出

  • 为什么在上面的例子中你需要"等级相同"? (2认同)

mar*_*pet 7

这是使用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"];
}
Run Code Online (Sandbox Code Playgroud)

输出:

替代文字