首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GraphViz用点保持节点位置

GraphViz用点保持节点位置
EN

Stack Overflow用户
提问于 2013-04-02 18:40:03
回答 1查看 2K关注 0票数 2

我知道有一些相关的问题,但我想知道是否有更好的解决方案来强制graphviz保持节点位置的定义顺序。

这就是我的问题:我有两个子图,每个子图有5个节点。每个节点都连接到另一个图的每个节点。我希望节点按1-1到1-5的顺序排列。但graphviz总是把它们混为一谈。

下面是图表,我使用的是DOT:

代码语言:javascript
复制
digraph G {
rankdir=LR;
ranksep=4.0;
subgraph cluster_1 {
rank=same;
label="Nr:1";
"1-1" [width=1, shape=circle, style=filled, fillcolor="#E3A869", label="1-1"];
"1-2" [width=1, shape=circle, style=filled, fillcolor="#E3A869", label="1-2"];
"1-3" [width=1, shape=circle, style=filled, fillcolor="#E3A869", label="1-3"];
"1-4" [width=1, shape=circle, style=filled, fillcolor="#E3A869", label="1-4"];
"1-5" [width=1, shape=circle, style=filled, fillcolor="#E3A869", label="1-5"];
}

subgraph cluster_2 {
rank=same;
label="Nr:2";
"2-1" [width=1, shape=circle, style=filled, fillcolor="#E3A869", label="2-1"];
"1-1" -> "2-1"  [color=blue, labelfontcolor="#009933", fontsize="10.0", penwidth=1];
"1-2" -> "2-1"  [color=blue, labelfontcolor="#009933", fontsize="10.0", penwidth=1];
"1-3" -> "2-1"  [color=blue, labelfontcolor="#009933", fontsize="10.0", penwidth=1];
"1-4" -> "2-1"  [color=blue, labelfontcolor="#009933", fontsize="10.0", penwidth=1];
"1-5" -> "2-1"  [color=blue, labelfontcolor="#009933", fontsize="10.0", penwidth=1];
"2-2" [width=1, shape=circle, style=filled, fillcolor="#E3A869", label="2-2"];
"1-1" -> "2-2"  [color=blue, labelfontcolor="#009933", fontsize="10.0", penwidth=1];
"1-2" -> "2-2"  [color=blue, labelfontcolor="#009933", fontsize="10.0", penwidth=1];
"1-3" -> "2-2"  [color=blue, labelfontcolor="#009933", fontsize="10.0", penwidth=1];
"1-4" -> "2-2"  [color=blue, labelfontcolor="#009933", fontsize="10.0", penwidth=1];
"1-5" -> "2-2"  [color=blue, labelfontcolor="#009933", fontsize="10.0", penwidth=1];
"2-3" [width=1, shape=circle, style=filled, fillcolor="#E3A869", label="2-3"];
"1-1" -> "2-3"  [color=blue, labelfontcolor="#009933", fontsize="10.0", penwidth=1];
"1-2" -> "2-3"  [color=blue, labelfontcolor="#009933", fontsize="10.0", penwidth=1];
"1-3" -> "2-3"  [color=blue, labelfontcolor="#009933", fontsize="10.0", penwidth=1];
"1-4" -> "2-3"  [color=blue, labelfontcolor="#009933", fontsize="10.0", penwidth=1];
"1-5" -> "2-3"  [color=blue, labelfontcolor="#009933", fontsize="10.0", penwidth=1];
"2-4" [width=1, shape=circle, style=filled, fillcolor="#E3A869", label="2-4"];
"1-1" -> "2-4"  [color=blue, labelfontcolor="#009933", fontsize="10.0", penwidth=1];
"1-2" -> "2-4"  [color=blue, labelfontcolor="#009933", fontsize="10.0", penwidth=1];
"1-3" -> "2-4"  [color=blue, labelfontcolor="#009933", fontsize="10.0", penwidth=1];
"1-4" -> "2-4"  [color=blue, labelfontcolor="#009933", fontsize="10.0", penwidth=1];
"1-5" -> "2-4"  [color=blue, labelfontcolor="#009933", fontsize="10.0", penwidth=1];
"2-5" [width=1, shape=circle, style=filled, fillcolor="#E3A869", label="2-5"];
"1-1" -> "2-5"  [color=blue, labelfontcolor="#009933", fontsize="10.0", penwidth=1];
"1-2" -> "2-5"  [color=blue, labelfontcolor="#009933", fontsize="10.0", penwidth=1];
"1-3" -> "2-5"  [color=blue, labelfontcolor="#009933", fontsize="10.0", penwidth=1];
"1-4" -> "2-5"  [color=blue, labelfontcolor="#009933", fontsize="10.0", penwidth=1];
"1-5" -> "2-5"  [color=blue, labelfontcolor="#009933", fontsize="10.0", penwidth=1];
}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-03 03:03:46

使用一些不可见边对子图中的节点进行排序,避免LR等级方向及其怪癖,使用不影响可见蓝色节点连接的节点排名(constraint=false)的最大直边边( straight splines=false),应用默认样式<代码>E29以最大限度减少重复和重新排序图形标记的获得以下结果:

代码语言:javascript
复制
digraph G {
    nodesep=4.0;
    splines=false;

    node[width=1, shape=circle, style=filled, fillcolor="#E3A869"];
    edge[style=invis];

    subgraph cluster_1 {
        label="Nr:1";
        "1-1" -> "1-2" -> "1-3" -> "1-4" -> "1-5";
    }

    subgraph cluster_2 {
        label="Nr:2";
        "2-1" -> "2-2" -> "2-3" -> "2-4" -> "2-5";
    }

    edge[style=solid, color=blue, penwidth=1, constraint=false];

    "1-1" -> "2-1";
    "1-2" -> "2-1";
    "1-3" -> "2-1";
    "1-4" -> "2-1";
    "1-5" -> "2-1";

    "1-1" -> "2-2";
    "1-2" -> "2-2";
    "1-3" -> "2-2";
    "1-4" -> "2-2";
    "1-5" -> "2-2";

    "1-1" -> "2-3";
    "1-2" -> "2-3";
    "1-3" -> "2-3";
    "1-4" -> "2-3";
    "1-5" -> "2-3";

    "1-1" -> "2-4";
    "1-2" -> "2-4";
    "1-3" -> "2-4";
    "1-4" -> "2-4";
    "1-5" -> "2-4";

    "1-1" -> "2-5";
    "1-2" -> "2-5";
    "1-3" -> "2-5";
    "1-4" -> "2-5";
    "1-5" -> "2-5";
}

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15762014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档