2010-08-10 65 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