2014-10-14 2 views
2

Я пытаюсь отобразить netlist netlist с графическим интерфейсом.Как выровнять по горизонтали узел в Graphviz?

Я прибегнув к:

  • записей формы для представления входных/выходных портов.
  • rankdir = LR предложить слева направо выравнивание

Следующий код работает отлично. Однако во время компоновки некоторые входы (здесь «i3») могут быть смещены: я ожидал бы, что i3 будет выровнен по левому краю, как для i1 и i2.

Как я могу это сделать?

digraph G { 
    graph [rankdir = LR]; 
    node[shape=record]; 
    c1[ label="{ {<i1>i1|<i2>i2}| c1 | {<f>f} }"]; 
    c2[ label="{ {<i0>i0}| c2 | {<out_0>out_0} }"]; 
    c3[ label="{ {<i0>i0}| c3 | {<out_0>out_0} }"]; 
    c4[ label="{ {<i0>i0|<i1>i1}| c4 | {<out_0>out_0} }"]; 
    i1; i2; i3; f; i1 -> c2:i0[ label="w(1)"]; 
    i2 -> c3:i0[ label="w(2)"]; 
    i3 -> c4:i1[ label="w(4)"]; 
    c1:f -> c4:i0[label="w(3)"]; 
    c2:out_0 -> c1:i1[label="w(5)"]; 
    c3:out_0 -> c1:i2[label="w(6)"]; 
    c4:out_0 -> f[label="w(7)"]; 
} 

enter image description here

ответ

1

Просто указано, что i1, i2 и i3 один и тот же ранг:

digraph G { 
    graph [rankdir = LR]; 
    node[shape=record]; 
    c1[ label="{ {<i1>i1|<i2>i2}| c1 | {<f>f} }"]; 
    c2[ label="{ {<i0>i0}| c2 | {<out_0>out_0} }"]; 
    c3[ label="{ {<i0>i0}| c3 | {<out_0>out_0} }"]; 
    c4[ label="{ {<i0>i0|<i1>i1}| c4 | {<out_0>out_0} }"]; 
    i1; i2; i3; f; i1 -> c2:i0[ label="w(1)"]; 
    i2 -> c3:i0[ label="w(2)"]; 
    i3 -> c4:i1[ label="w(4)"]; 
    c1:f -> c4:i0[label="w(3)"]; 
    c2:out_0 -> c1:i1[label="w(5)"]; 
    c3:out_0 -> c1:i2[label="w(6)"]; 
    c4:out_0 -> f[label="w(7)"]; 

    {rank=same; i1; i2; i3} 
}