2010-08-10 81 views
19

这可能与How to place edge labels ON edge in graphviz有关:我有下面的图形,我使用命令dot -Teps g.dot > g.eps可视化:Graphviz:将边缘标签放在另一侧

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之间放置标签来使结果更加对称图的一侧。

回答

6

下面是使用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

25

手动放置边缘标签不能用graphviz完成。

但是,您可以使用headlabellabeldistancelabelangle属性:

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

+2

为什么需要 “等级相同的” 在上面的例子? – Pacerier 2014-07-16 20:52:51