Как изменить ранг графа Graphviz?

Я хочу, чтобы subgraph clusterCG имел такой же ранг, как 3 (clusterCG не содержал 3)

digraph G{
 rankdir = LR;
 node [shape = none]

 1->2->3->4[arrowhead=none]

 node [shape = ellipse]

 A->A2->A3;

 subgraph clusterCG{
  shape = rect;
  rank=same;
  A2;
  B;
  C;
  color=blue;
  label="C";
 }

 { rank=same; 1; A;}
 { rank=same; 3; CG;}
 { rank=same; 4; A3;}
}

enter image description here

CG генерируется как независимый node с рангом 3.

Я хочу, чтобы подграф clusterCG имел ранг 3.

Ответ 1

Возможно, это не лучшее решение, но кажется, что узлы с нулевым размером - это единственное, что работает

digraph G{
 rankdir = LR;
 node [shape = none]

1->2->3->4[arrowhead=none]

node [shape = ellipse]
ACG[shape = none,label="",width=0, height=0];

CG->A2 [style=invis,constraint=false];

A->ACG[arrowhead=none];
ACG->A2->A3;

 subgraph clusterCG{
  shape = rect;
  rank=same;
  A2;
  B;
  C;
  color=blue;
  label="C";
 }

 { rank=same; 1; A;}
 { rank=same; 2; ACG;}
 { rank=same; 4; A3;}

}

enter image description here

Ответ 2

используйте другой алгоритм ранга с "newrank = true"

 digraph G {
 newrank=true
 rankdir = LR;
 node [shape = none]

 1->2->3->4[arrowhead=none]

 node [shape = ellipse]

 A->A2->A3;

 subgraph clusterCG{
  shape = rect;
  rank=same;

  A2;
  B;
  C;
  color=blue;
  label="C";
 }

 { rank=same; 1; A;}
 { rank=same; 3; A2}
 { rank=same; 4; A3;}
}