在graphviz/dot中记录内的边缘

5
我希望能够在 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

我希望红色边缘在端口之间成为一条直线,位于记录内部。如果边缘覆盖记录标签,我不在意。
是否有一种方法可以强制边缘成为忽略障碍物的直线,或者以其他方式指示dot应忽略对象是否覆盖节点/标签?
这个问题类似于 Graphviz edges between ports belonging to the same record node look bad,但没有答案。
1个回答

2

Try: 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


谢谢。这解决了在记录内部路由边的直接问题。不幸的是,我的图表的其余部分需要直线边以便呈现良好。 - jonasn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接