I am trying to plot a graph with 3 levels of nodes, with equal distances between the levels. However, graphviz somehow decides that the distance between the middle level and the bottom one should be much larger than the distance between the top and middle level. Any way to fix this?
Here is my code:
digraph g{
rankdir="LR";
graph [pad="0.5", ranksep="0.525", nodesep="3"];
splines=false;
node[shape = square];
edge[style=invis];
subgraph cluster_3 {
color=invis;
a1->a2->a3->a4->a5->a6->a7;
}
subgraph cluster_2 {
color=invis;
a->b->c->d->e->f->g;
}
subgraph cluster_1 {
color=invis;
1->2->3->4->5->6->7;
}
"a1" [label="1'"];
"a2" [label="2'"];
"a3" [label="3'"];
"a4" [label="4'"];
"a5" [label="5'"];
"a6" [label="6'"];
"a7" [label="7'"];
edge[style=solid, constraint=false];
a->1[arrowhead=none, arrowtail=none];
a->2[arrowhead=none, arrowtail=none];
a->3[arrowhead=none, arrowtail=none];
a->a1[arrowhead=none, arrowtail=none];
a->a2[arrowhead=none, arrowtail=none];
a->a3[arrowhead=none, arrowtail=none];
b->1[arrowhead=none, arrowtail=none];
b->3[arrowhead=none, arrowtail=none];
b->7[arrowhead=none, arrowtail=none];
b->a1[arrowhead=none, arrowtail=none];
b->a3[arrowhead=none, arrowtail=none];
b->a7[arrowhead=none, arrowtail=none];
c->2[arrowhead=none, arrowtail=none];
c->6[arrowhead=none, arrowtail=none];
c->7[arrowhead=none, arrowtail=none];
c->a2[arrowhead=none, arrowtail=none];
c->a6[arrowhead=none, arrowtail=none];
c->a7[arrowhead=none, arrowtail=none];
d->1[arrowhead=none, arrowtail=none];
d->4[arrowhead=none, arrowtail=none];
d->7[arrowhead=none, arrowtail=none];
d->a1[arrowhead=none, arrowtail=none];
d->a4[arrowhead=none, arrowtail=none];
d->a7[arrowhead=none, arrowtail=none];
e->1[arrowhead=none, arrowtail=none];
e->2[arrowhead=none, arrowtail=none];
e->3[arrowhead=none, arrowtail=none];
e->a1[arrowhead=none, arrowtail=none];
e->a2[arrowhead=none, arrowtail=none];
e->a3[arrowhead=none, arrowtail=none];
f->1[arrowhead=none, arrowtail=none];
f->4[arrowhead=none, arrowtail=none];
f->7[arrowhead=none, arrowtail=none];
f->a1[arrowhead=none, arrowtail=none];
f->a4[arrowhead=none, arrowtail=none];
f->a7[arrowhead=none, arrowtail=none];
g->5[arrowhead=none, arrowtail=none];
g->6[arrowhead=none, arrowtail=none];
g->7[arrowhead=none, arrowtail=none];
g->a5[arrowhead=none, arrowtail=none];
g->a6[arrowhead=none, arrowtail=none];
g->a7[arrowhead=none, arrowtail=none];
}
The output looks like this currently:

Just played around a bit and came up with the below graph, is this any closer to want to want?
digraph g{
graph [pad="0.5", nodesep="1", ranksep="2"];
splines="false";
node[shape = square];
edge[style=invis];
a1->a->1
a2->b->2
a3->c->3
a4->d->4
a5->e->5
a6->f->6
a7->g->7
"a1" [label="1'"];
"a2" [label="2'"];
"a3" [label="3'"];
"a4" [label="4'"];
"a5" [label="5'"];
"a6" [label="6'"];
"a7" [label="7'"];
edge[style=solid, constraint=false];
a->1[arrowhead=none, arrowtail=none];
a->2[arrowhead=none, arrowtail=none];
a->3[arrowhead=none, arrowtail=none];
a->a1[arrowhead=none, arrowtail=none];
a->a2[arrowhead=none, arrowtail=none];
a->a3[arrowhead=none, arrowtail=none];
b->1[arrowhead=none, arrowtail=none];
b->3[arrowhead=none, arrowtail=none];
b->7[arrowhead=none, arrowtail=none];
b->a1[arrowhead=none, arrowtail=none];
b->a3[arrowhead=none, arrowtail=none];
b->a7[arrowhead=none, arrowtail=none];
c->2[arrowhead=none, arrowtail=none];
c->6[arrowhead=none, arrowtail=none];
c->7[arrowhead=none, arrowtail=none];
c->a2[arrowhead=none, arrowtail=none];
c->a6[arrowhead=none, arrowtail=none];
c->a7[arrowhead=none, arrowtail=none];
d->1[arrowhead=none, arrowtail=none];
d->4[arrowhead=none, arrowtail=none];
d->7[arrowhead=none, arrowtail=none];
d->a1[arrowhead=none, arrowtail=none];
d->a4[arrowhead=none, arrowtail=none];
d->a7[arrowhead=none, arrowtail=none];
e->1[arrowhead=none, arrowtail=none];
e->2[arrowhead=none, arrowtail=none];
e->3[arrowhead=none, arrowtail=none];
e->a1[arrowhead=none, arrowtail=none];
e->a2[arrowhead=none, arrowtail=none];
e->a3[arrowhead=none, arrowtail=none];
f->1[arrowhead=none, arrowtail=none];
f->4[arrowhead=none, arrowtail=none];
f->7[arrowhead=none, arrowtail=none];
f->a1[arrowhead=none, arrowtail=none];
f->a4[arrowhead=none, arrowtail=none];
f->a7[arrowhead=none, arrowtail=none];
g->5[arrowhead=none, arrowtail=none];
g->6[arrowhead=none, arrowtail=none];
g->7[arrowhead=none, arrowtail=none];
g->a5[arrowhead=none, arrowtail=none];
g->a6[arrowhead=none, arrowtail=none];
g->a7[arrowhead=none, arrowtail=none];
}

来源:https://stackoverflow.com/questions/27110526/how-to-manage-distance-between-nodes-in-graphviz