Graphviz点中节点的合理对齐

Graphviz点中节点的合理对齐,graphviz,dot,Graphviz,Dot,我正试图整理一个家谱,以帮助我理解一个受欢迎的电视节目,这个项目已经成熟了 为了说明这棵树,我使用了graphviz的点函数,这是我以前用来说明复杂网络的工具。不幸的是,对我来说,这是一段时间以前的事了,我想做的一些基本改变我都想做 在下面的示例中(此链接处的图像),我希望将明显的关系保持在一起,而不是让节点跨画布连接。例如,Sansa和Tyrion一起向左移动,Eddard和Catelyn一起移动Catelyn,Lyanna和Rhaegar一起移动Lyanna向右移动 我尝试过集群和群组,但不

我正试图整理一个家谱,以帮助我理解一个受欢迎的电视节目,这个项目已经成熟了

为了说明这棵树,我使用了graphviz的点函数,这是我以前用来说明复杂网络的工具。不幸的是,对我来说,这是一段时间以前的事了,我想做的一些基本改变我都想做

在下面的示例中(此链接处的图像),我希望将明显的关系保持在一起,而不是让节点跨画布连接。例如,Sansa和Tyrion一起向左移动,Eddard和Catelyn一起移动Catelyn,Lyanna和Rhaegar一起移动Lyanna向右移动

我尝试过集群和群组,但不知道我做错了什么

graph got {

    subgraph gen2 {
        rank = same

        La2a [shape=box, label="Tywin Lanister"];
        Tu2a [shape=box, label="Hoster Tully"];
        S2a [shape=box, label="Rickard Stark"];
        Ta2a [shape=box, label="Aerys II Targaryen"];

    }

    subgraph gen2sons {
        rank = same

        Tu2asons [shape=point];
        S2asons [shape=point];
        Ta2asons [shape=point];
        La2asons [shape=point];

    }

    subgraph gen3 {
        rank = same

        S3a [shape=box, label="Eddard \"Ned\" Stark"];
        S3b [shape=box, label="Catelyn Stark"];
        S3aS3b [shape=point];
        S3c [shape=box, label="Lyanna Stark"];
        S3d [shape=box, label="Brandon Stark"];
        S3e [shape=box, label="Benjen Stark"];

        Ta3a [shape=box, label="Rhaegar Targaryen"];
        Ta3b [shape=box, label="Daenerys Targaryen"];
        Ta3c [shape=box, label="Jaehaerys Targaryen"];
        S3cTa3a [shape=point];

        La3a [shape=box, label="Jamie Lanister"];
        La3b [shape=box, label="Cersei Lanister"];
    }

    subgraph gen3sons {
        rank = same

        S3aS3bsons [shape=point];
        S3cTa3asons [shape=point];

    }

    subgraph gen4 {
        rank = same

        S4b [shape=box, label="Sansa Stark"];
        S4a [shape=box, label="Rob Stark"];
        S4c [shape=box, label="Arya Stark"];
        S4d [shape=box, label="Brandon Stark"];
        S4e [shape=box, label="Rickon Stark"];

        Sn4a [shape=box, label="Jon Snow"];

        La3c [shape=box, label="Tyrion Lanister"];

    }

// Sons and Daughters

    La2a -- La2asons
        La2asons -- La3a
        La2asons -- La3b
        La2asons -- La3c

    Tu2a -- Tu2asons
        Tu2asons -- S3b

    S2a -- S2asons
        S2asons -- S3a
        S2asons -- S3c
        S2asons -- S3d
        S2asons -- S3e

    Ta2a -- Ta2asons
        Ta2asons -- Ta3a
        Ta2asons -- Ta3b
        Ta2asons -- Ta3c

    S3aS3b -- S3aS3bsons
        S3aS3bsons -- S4a
        S3aS3bsons -- S4b
        S3aS3bsons -- S4c
        S3aS3bsons -- S4d
        S3aS3bsons -- S4e

    S3cTa3a -- S3cTa3asons  
        S3cTa3asons -- Sn4a

// Marriage

    S3a -- S3aS3b -- S3b

    La3c -- S4b

    S3c -- S3cTa3a -- Ta3a

}

您的图表很长,但可能会对如何使用不可见的列和列来实现这一点有所帮助,或多或少会将节点强制到“网格”中。在那个例子中,我用一个更简单的例子来演示,但从您已经做的事情来看,我确信您可以自己尝试我的方法。希望对你有用