How to manage distance between nodes in graphviz?

廉价感情. 提交于 2019-12-05 16:44:26

问题


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:


回答1:


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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!