【问题标题】:Preserve order of nodes in grahpviz subgraph保留 grahpviz 子图中的节点顺序
【发布时间】:2021-02-01 11:04:52
【问题描述】:

如何让graphviz保留子图中节点的顺序?

请参阅下面的图片和代码。由于某种原因,第二个节点(编号为 2)显示在顶部,而第一个节点显示在底部。

我查看了这个问题,但没有解决问题(或者我不明白如何正确实施这些建议):

digraph G {

        rankdir=LR
        splines=line
        nodesep=0.3;
        ranksep=2
        
        node [label=""];
        // edge [dir=none];
        edge[arrowhead="empty"];
        // graph [ordering="out"];

        subgraph cluster_0 {
        color=white;
                // {rank=same;x1;x2;x3;x4;x5}
                node [style=solid,color=blue4, shape=circle];
        x1 [label="1"] x2 [label="2"] x3 [label="3"] x4 [label="4"] x5 [label="5"];
    }

    subgraph cluster_1 {
        color=white;
        node [style=solid,color=red2, shape=circle];
                edge[style=invisible]
        a12 [label="1"] a22 [label="2"] a32 [label="3"] a42 [label="4"];
    }

    subgraph cluster_2 {
        color=white;
        node [style=solid,color=red2, shape=circle];
        a13 a23 a33 a43;
    }

    subgraph cluster_3 {
        color=white;
        node [style=solid,color=seagreen2, shape=circle];
        O1 O2 O3;
    }

        x1 -> a12;
        x1 -> a22;
        x1 -> a32;
        x1 -> a42;

        x2 -> a12;
        x2 -> a22;
        x2 -> a32;
        x2 -> a42;
 
        x3 -> a12;
        x3 -> a22;
        x3 -> a32;
        x3 -> a42;

        x4 -> a12;
        x4 -> a22;
        x4 -> a32;
        x4 -> a42;

        x5 -> a12;
        x5 -> a22;
        x5 -> a32;
        x5 -> a42;

        a12 -> a13
        a22 -> a13
        a32 -> a13
        a42 -> a13

        a12 -> a23
        a22 -> a23
        a32 -> a23
        a42 -> a23

        a12 -> a33
        a22 -> a33
        a32 -> a33
        a42 -> a33

        a12 -> a43
        a22 -> a43
        a32 -> a43
        a42 -> a43

        a13 -> O1
        a23 -> O1
        a33 -> O1
        a43 -> O1

        a13 -> O2
        a23 -> O2
        a33 -> O2
        a43 -> O2

        a13 -> O3
        a23 -> O3
        a33 -> O3
        a43 -> O3

}

【问题讨论】:

    标签: graphviz


    【解决方案1】:

    我也找不到成功使用 ordering 的方法。因为它们似乎没有被使用,所以我删除了 cluster 引用。此版本使用 weight 属性来保持节点有序。

    digraph G {
            rankdir=LR
            splines=line
            nodesep=0.3;
            ranksep=2
            
            node [label=""];
            edge[arrowhead="empty"];
    
         {
            rank=same
            node [style=solid,color=blue4, shape=circle];
            x1 [label="1"] x2 [label="2"] x3 [label="3"] x4 [label="4"] x5 [label="5"];
        edge [weight=50]  // arbitrarily large integer
        edge [style=invis]
        x1->x2 x2->x3 x3->x4 x4->x5
         }
         {
            rank=same
            node [style=solid,color=red2, shape=circle];
            edge[style=invisible]
            a12 [label="1"] a22 [label="2"] a32 [label="3"] a42 [label="4"];
        
        edge [weight=50]  // arbitrarily large integer
        edge [style=invis]
        a12->a22 a22->a32 a32->a42
        }
        {
            rank=same
            node [style=solid,color=red2, shape=circle];
            a13 a23 a33 a43;
        }
        {
            rank=same
            node [style=solid,color=seagreen2, shape=circle];
            O1 O2 O3;
        }
            x1 -> a12;
            x1 -> a22;
            x1 -> a32;
            x1 -> a42;
    
            x2 -> a12;
            x2 -> a22;
            x2 -> a32;
            x2 -> a42;
     
            x3 -> a12;
            x3 -> a22;
            x3 -> a32;
            x3 -> a42;
    
            x4 -> a12;
            x4 -> a22;
            x4 -> a32;
            x4 -> a42;
    
            x5 -> a12;
            x5 -> a22;
            x5 -> a32;
            x5 -> a42;
    
            a12 -> a13
            a22 -> a13
            a32 -> a13
            a42 -> a13
    
            a12 -> a23
            a22 -> a23
            a32 -> a23
            a42 -> a23
    
            a12 -> a33
            a22 -> a33
            a32 -> a33
            a42 -> a33
    
            a12 -> a43
            a22 -> a43
            a32 -> a43
            a42 -> a43
    
            a13 -> O1
            a23 -> O1
            a33 -> O1
            a43 -> O1
    
            a13 -> O2
            a23 -> O2
            a33 -> O2
            a43 -> O2
    
            a13 -> O3
            a23 -> O3
            a33 -> O3
            a43 -> O3
    }
    

    捐赠:

    (是的,中间有很多失败)

    【讨论】:

      猜你喜欢
      • 2022-08-18
      • 2011-05-13
      • 2021-06-11
      • 2020-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-22
      • 1970-01-01
      相关资源
      最近更新 更多