24

这可能与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 之间的标签放在图表左侧,结果更加对称。

4

2 回答 2

29

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

但是,您可以使用headlabel,labeldistancelabelangle属性:

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

输出:

图形输出

于 2011-01-08T20:41:21.187 回答
8

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

输出:

替代文字

于 2011-01-13T00:20:30.387 回答