digraph Taskflow { newrank=true; #columns subgraph { p00[label="pipe-0"]; p10[label="pipe-0"]; p20[label="pipe-0"]; p30[label="pipe-0"]; } subgraph { p01[label="pipe-1"]; p11[label="pipe-1"]; p21[label="pipe-1"]; p31[label="pipe-1"]; } subgraph { p02[label="pipe-2"]; p12[label="pipe-2"]; p22[label="pipe-2"]; p32[label="pipe-2"]; } subgraph cluster0 { label="rt-0"; style="dashed"; color="blue"; rank="same"; p00; p01; p02; } subgraph cluster1 { label="rt-1"; style="dashed"; color="red"; rank="same"; p10; p11; p12; } subgraph cluster2 { label="rt-2"; style="dashed"; color="blue"; rank="same"; p20; p21; p22; } subgraph cluster3 { label="rt-3"; style="dashed"; color="red"; rank="same"; p30; p31; p32; } p00 -> p01; p01 -> p02; p10 -> p11; p11 -> p12; p20 -> p21; p21 -> p22; p30 -> p31; p31 -> p32; p00 -> p10; p02 -> p12; p10 -> p20; p12 -> p22; p20 -> p30; p22 -> p32; }