在graphviz中压缩未排名的子图

时间:2015-02-13 15:25:16

标签: graph graphviz dot

我正在尝试在graphviz中编写一个子图,但是虽然我喜欢主图来保留自己节点的排名,但我希望子图1能够得到一个压缩形式,即将其布局限制在一个正方形中。

这是我获得的实际图表:

enter image description here

这是生成它的代码(我实际上是使用python lib来生成输出图像):

    subgraph cluster_15_ {
        graph [aspect=1 concentrate=true ordering=out ratio=compress size="1.0,1.0!"]
        node [fixedsize=true shape=circle width=0.4]
        edge [dirType=forward len=0.5]
            cluster_15_0 [label=0]
            cluster_15_2 [label=2]
            cluster_15_3 [label=3]
            cluster_15_4 [label=4]
            cluster_15_5 [label=5]
            cluster_15_7 [label=7]
            cluster_15_8 [label=8]
            cluster_15_11 [label=11]
            cluster_15_12 [label=12]
            cluster_15_13 [label=13]
            cluster_15_15 [label=15]
                cluster_15_0 -> cluster_15_2
                cluster_15_5 -> cluster_15_3
                cluster_15_3 -> cluster_15_4
                cluster_15_2 -> cluster_15_5
                cluster_15_5 -> cluster_15_7
                cluster_15_7 -> cluster_15_8
                cluster_15_12 -> cluster_15_11
                cluster_15_15 -> cluster_15_12
                cluster_15_15 -> cluster_15_13
                cluster_15_4 -> cluster_15_15
    }

我希望将节点放入一个4x4的盒子中(弧线可以向上,向下,这不是问题)。

1 个答案:

答案 0 :(得分:1)

这将创建 4 个等级,每个等级包含 4 个节点

digraph four{
  subgraph cluster4{
  edge [ style=invis]
  // set up canks (rows)
  {rank=same 0-> 1-> 2-> 3}
  {rank=same 4-> 5-> 6-> 7}
  {rank=same 8-> 9-> 10-> 11}
  {rank=same 12-> 13-> 14-> 15}
  // set up files (columns)
  { 0-> 4-> 8-> 12}
  { 1-> 5-> 9-> 13}
  { 2-> 6-> 10-> 14}
  { 3-> 7-> 11-> 15}

  edge [constraint=false style=solid]
  0->2
  2->5
  5->3
  5->7
  3->4
  7->8
  4->15
  15->12
  15->13
  12->11
  }
}

给予:
enter image description here