Мне было трудно это сделать, и я не гарантирую, что он работает с более сложным графиком. Помимо получения узлов в нужной последовательности, довольно сложно расположить кластеры там, где вы хотите. Тем не менее, это:
graph {
splines=line;
rankdir=LR
subgraph cluster_0 {
label="Subgraph A";
rank=same
a -- b -- c [style=invis]
}
subgraph cluster_1 {
label="Subgraph B";
rank=same
d -- e [style=invis]
}
edge[constraint=false]
a -- e;
a -- d;
b -- d;
b -- e;
c -- d;
c -- e;
}
производит это: