Вы можете сделать это, используя атрибут dir
ребер в данном подграфе, например:
digraph {
subgraph{
node [fillcolor = red, style = filled]
s00 -> { s10 s11 s12};
s10 -> { s22 s23 };
s23 -> { s30 s31 };
}
subgraph{
edge [dir = back]
node [fillcolor = blue, style = filled]
{ g10 g11 g111 } -> g00;
{ g20 } -> g111;
{ g30 g31 g32 } -> g20;
}
}
Я немного упростил ваш код и использовал цвета для разметки различных графиков.
Это будет выглядеть так при использовании точечного макета:
Graph
Edit:
Чтобы «сдвинуть» один из подграфов вверх, вы можете вставить пару невидимых узлов (сколько бы уровней вы ни хотели сместить):
digraph {
subgraph{
node [fillcolor = red, style = filled]
{
node [style = invis]
invis1 invis2 invis3
}
invis1 -> invis2 -> invis3 -> s00 [style = invis]
s00 -> { s10 s11 s12};
s10 -> { s22 s23 };
s23 -> { s30 s31 };
}
subgraph{
edge [dir = back]
node [fillcolor = blue, style = filled]
{ g10 g11 g111 } -> g00;
{ g20 } -> g111;
{ g30 g31 g32 } -> g20;
}
}
выглядит так: График