How can I align nodes along the same vertical line without adding invisible edges?

I have the following digraph:


digraph G {
rankdir=TB
l1 -> l2 -> l3 -> l4 -> l5 -> l6 -> l7;
f1a -> s1
f1b -> s1
f1c -> s1
f1d -> s1
s1 -> fo1a
s1 -> fo1b
s1 -> fo1c
f2b -> s2
s2 -> fo2a
s2 -> fo2b
fo1a -> s2
fo2a -> s3 [style=invis]
fo2b -> s3 [style=invis]
{rank=same; l1; f1a; f1b; f1c; f1d}
{rank=same; l3; fo1a; fo1b; fo1c;}
{rank=same; l4; f2b;}
s1 [shape=box]
s2 [shape=box]
s3 [shape=box]
}

which produces the following output:

Is there a way to vertically align boxes s1, s2 and s3 without adding invisible edges?

Adding invisible edges works, but I'm working in a tool for generating flowcharts and calculating those edges implies a more complex algorithm... so I'm searching for an alternative.

Adding this code I'll get the desired result:


fo1a -> s2
fo1b -> f2b [style=invis]

 

I've created a jsfiddle.

Recent comments