digraph { layout="neato"; overlap="scale"; splines="true"; outputorder="edgesfirst"; bgcolor="black"; edge [fontcolor="gray"]; node [style="filled", fillcolor="black", fontcolor="white"]; maj0 [label="C major"]; maj1 [label="C# major\nDb major"]; maj2 [label="D major"]; maj3 [label="D# major\nEb major"]; maj4 [label="E major"]; maj5 [label="F major"]; maj6 [label="F# major\nGb major"]; maj7 [label="G major"]; maj8 [label="G# major\nAb major"]; maj9 [label="A major"]; maj10[label="A# major\nBb major"]; maj11[label="B major"]; min0 [label="C minor"]; min1 [label="C# minor\nDb minor"]; min2 [label="D minor"]; min3 [label="D# minor\nEb minor"]; min4 [label="E minor"]; min5 [label="F minor"]; min6 [label="F# minor\nGb minor"]; min7 [label="G minor"]; min8 [label="G# minor\nAb minor"]; min9 [label="A minor"]; min10[label="A# minor\nBb minor"]; min11[label="B minor"]; subgraph { cluster=true; node [style="filled", shape="rect"]; key0 [label="Perfect 5th", fillcolor="blue", fontcolor="white"]; key2 [label="Relative minor", fillcolor="pink", fontcolor="black"]; key3 [label="Relative major", fillcolor="yellow", fontcolor="black"]; } edge [color="blue", style="filled", fillcolor="blue"]; maj0 -> maj7; maj1 -> maj8; maj2 -> maj9; maj3 -> maj10; maj4 -> maj11; maj5 -> maj0; maj6 -> maj1; maj7 -> maj2; maj8 -> maj3; maj9 -> maj4; maj10 -> maj5; maj11 -> maj6; min0 -> min7; min1 -> min8; min2 -> min9; min3 -> min10; min4 -> min11; min5 -> min0; min6 -> min1; min7 -> min2; min8 -> min3; min9 -> min4; min10 -> min5; min11 -> min6; edge [color="pink", style="filled", fillcolor="pink"]; maj0 -> min9; maj1 -> min10; maj2 -> min11; maj3 -> min0; maj4 -> min1; maj5 -> min2; maj6 -> min3; maj7 -> min4; maj8 -> min5; maj9 -> min6; maj10 -> min7; maj11 -> min8; edge [color="yellow", style="filled", fillcolor="yellow"]; min0 -> maj8; min1 -> maj9; min2 -> maj10; min3 -> maj11; min4 -> maj0; min5 -> maj1; min6 -> maj2; min7 -> maj3; min8 -> maj4; min9 -> maj5; min10 -> maj6; min11 -> maj7; }