在graphviz / dot中记录内部记录

时间:2018-05-04 12:41:02

标签: record graphviz dot

我想通过在该记录中的两个元素之间运行直边来突出显示graphviz(v 2.38.0)中记录内的关系。但是,dot会尽一切可能在记录节点之外运行边缘。

以下示例显示了我的问题。

digraph {
  rankdir = LR;
  splines = line;

  i1; i2; i3;
  mux [shape=record,label="{  {<i1>i1|<i2>i2|<i3>i3} | MUX | <o1>o1}"];
  o;

  i1 -> mux:i1;
  i2 -> mux:i2;
  i3 -> mux:i3;
  mux:o1 -> o;

  mux:i1:e -> mux:o1:w [color=red];

}

enter image description here

我希望红色边缘是记录内部端口之间的直线。我不在乎边缘是否覆盖了唱片公司标签。

有没有办法强制边缘成为忽略障碍物的直线,或以其他方式指示对象在覆盖节点/标签时应忽略的点?

此问题与Graphviz edges between ports belonging to the same record node look bad类似,但没有答案。

1 个答案:

答案 0 :(得分:0)

尝试:splines = curved;

digraph {
  rankdir = LR;
  splines = curved;

  i1; i2; i3;
  mux [shape=record,label="{  {<i1>i1|<i2>i2|<i3>i3} | MUX | <o1>o1}"];
  o;

  i1 -> mux:i1;
  i2 -> mux:i2;
  i3 -> mux:i3;
  mux:o1 -> o;

  mux:i1:e -> mux:o1:w [color=red];


}

png