【问题标题】:How to left-align a node in Graphviz?如何在 Graphviz 中左对齐节点?
【发布时间】:2025-11-24 15:10:02
【问题描述】:

我正在尝试使用 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)"];
}

【问题讨论】:

    标签: graphviz dot graph-drawing circuit-diagram


    【解决方案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}
    }
    

    【讨论】:

      最近更新 更多