我希望生成像这样的简单线性排列:
我觉得我做得太复杂了。我尝试过硬编码位置,但这有点更加复杂,因为我想要平滑的边缘。
我不特别关心边缘是在上面还是在下面,但指定这一点将是一个不错的功能。
这是一个人们可能认为使用Graphviz很简单的事情,但实际上并不是。
Graphviz旨在最小化边的交叉,因此它永远不会像那些图片一样布置边缘。这不是Graphviz的初衷。
但我同意,有一个关闭边缘优化的选项会很好。
你可以创建类似于这样的东西:
rankdir=LR;
ranksep=0;
edge[style=invis];
node[shape=none, width=0.3, height=0, margin=0.02];
4->7->5->1->8->3->6->2;
edge[style=solid, constraint=false];
1:s->2:s->3:s->4:s->5:s->6:s->7:s->8:s
导致
一旦您开始使用北向和南向端口,graphviz将尝试最小化边的交叉并引导节点之间的某些边:
rankdir=LR;
ranksep=0.05;
edge[style=invis];
node[shape=none, width=0.3, height=0, fontsize=12, margin=0.02];
4->7->5->1->8->3->6->2;
edge[style=solid, weight=0];
1:n->2:n;
2:s->3:s->4:s;
4:n->5:n->6:n;
6:s->7:s;
7:n->8:n;
如果有更好的近似方法,请发表,我会感兴趣的。
\includegraphics{}
命令。