2012-10-03 104 views
1

我有以下graphviz文件。现在,边缘标签放置在一条水平线上,但我希望节点放置在水平线上。我怎样才能做到这一点?Graphviz - 将节点放置在水平线上

digraph finite_state_machine { 
    node [shape = doublecircle]; q_5; 
    node [shape = circle]; 
    q_1 -> q_2 [ label = "." ]; 
    q_1 -> q_2 [ label = "\epsilon" ]; 
    q_2 -> q_1 [ label = "\epsilon" ]; 
    q_2 -> q_3 [ label = "a" ]; 
    q_3 -> q_4 [ label = "^\wedge a" ]; 
    q_3 -> q_4 [ label = "\epsilon" ]; 
    q_4 -> q_3 [ label = "\epsilon" ]; 
    q_4 -> q_5 [ label = "b" ]; 
} 

这是它目前的样子:current output

+0

请尝试使用Rankdir = “LR” 的节点。看看它是否有帮助。 –

回答

3

您可以使用rank=same强制同一级别的所有节点:

digraph finite_state_machine { 
{ 
rank=same; 
    node [shape = doublecircle]; q_5; 
    node [shape = circle]; 
    q_1 -> q_2 [ label = "." ]; 
    q_1 -> q_2 [ label = "\epsilon" ]; 
    q_2 -> q_1 [ label = "\epsilon" ]; 
    q_2 -> q_3 [ label = "a" ]; 
    q_3 -> q_4 [ label = "^\wedge a" ]; 
    q_3 -> q_4 [ label = "\epsilon" ]; 
    q_4 -> q_3 [ label = "\epsilon" ]; 
    q_4 -> q_5 [ label = "b" ]; 
    } 
} 
+0

谢谢!这有效,但我得到了新的问题......:p – oskarkv

+1

从煎锅里走进火炉......我回答了你的另一个问题。 – marapet