graphviz中的简单线性排列

Cha*_*ker 6 dot graphviz neato

我想生成这样的简单线性排列:

graph我很想用graphviz重新创建

我觉得我这么做太难了.我试着对位置进行硬编码,但它有点复杂,因为我想要花键边缘.

如果边缘在上方或下方,我并不特别在意,但指定这将是一个很好的功能.

mar*_*pet 8

这是人们可能认为用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
Run Code Online (Sandbox Code Playgroud)

导致

graphviz输出

一旦开始使用南北端口,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;
Run Code Online (Sandbox Code Playgroud)

另一个graphviz输出

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