Graphviz: Place edge label on the other side

。_饼干妹妹 提交于 2019-11-29 06:11:34

问题


This may be related to How to place edge labels ON edge in graphviz: I have the following graph, which I visualize using the command 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"];
}

I would like the result to be more symmetric by putting the label between User and Triple on the left side of the graph.


回答1:


And here's the second workaround using splines=false and double edges:

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

Output:




回答2:


Manual placement of edge labels cannot be done with graphviz.

However, you could use the headlabel, labeldistance and labelangle attributes:

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

Output:



来源:https://stackoverflow.com/questions/3450700/graphviz-place-edge-label-on-the-other-side

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!