digraph { dpi = 300.0; rankdir = "LR"; splines = false; cluster = true; node [shape = diamond;]; // The graphs end up with the correct order, i.e. Task 1 *above* Task 2, when // this is first. subgraph cluster_ColleagueB { label = "Task A"; A1; A2; A0_1 [style = invis;]; A3; A1 -> A2; A2 -> A0_1 [arrowhead = "tee"; headport = "A0_1:c"; headclip = false;]; A0_1; A0_1 -> A3 [dir = both; arrowtail = "tee"; tailclip = false;]; } subgraph cluster_ColleagueA { newrank = true; label = "Task B"; B1 -> B2 -> B3 -> B4; } B3 -> A3; }