graphviz中的简单线性排列

graphviz中的简单线性排列,graphviz,dot,neato,Graphviz,Dot,Neato,我想生成简单的线性排列,如下所示: 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->

我想生成简单的线性排列,如下所示:

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一定很简单的事情之一,但事实并非如此

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;

如果有人有更好的近似值,请发布,我很感兴趣