Subgraphs laid out by quandrant around a main idea?

This uses (invisible - peripheries=0) clusters and a few invisible edges.
Pretty repeatable & better(?) that expected.
But if you have more than 4 subgraphs, I suggest a major re-think.

digraph {
  peripheries=0
    subgraph clustergroup_000 {
      "main_idea_title" [width=5.555555555555555, height=1.0416666666666665, shape=rectangle, label="MAIN IDEA", style="filled", fillcolor="#baee7b"]
      "main_idea_text" [width=3.472222222222222, height=3.472222222222222, shape=rectangle, label="MAIN DESCRIPTION", style="filled", fillcolor="#baee7b"]
      "main_idea_title" -> "main_idea_text" [style=invis]
    }

  subgraph clusterwrap0 {
    subgraph clustergroup_0 {
        "sub_idea_0_title" [width=4.444444444444445, height=0.8333333333333333, shape=rectangle, label="", style="filled", fillcolor="#7beee8"]
        "sub_idea_0_text" [width=2.7777777777777777, height=2.7777777777777777, shape=rectangle, label="", style="filled", fillcolor="#7beee8"]
        "sub_idea_0.0_title" [width=3.888888888888889, height=0.7291666666666666, shape=rectangle, label="", style="filled", fillcolor="#af7bee"]
        "sub_idea_0.0_text" [width=2.4305555555555554, height=2.4305555555555554, shape=rectangle, label="", style="filled", fillcolor="#af7bee"]
        "sub_idea_0.0.0_title" [width=2.7777777777777777, height=0.5208333333333333, shape=rectangle, label="", style="filled", fillcolor="#ee7b81"]
        "sub_idea_0.0.0_text" [width=1.736111111111111, height=1.736111111111111, shape=rectangle, label="", style="filled", fillcolor="#ee7b81"]
        "sub_idea_0.0.1_title" [width=2.7777777777777777, height=0.5208333333333333, shape=rectangle, label="", style="filled", fillcolor="#e8ee7b"]
        "sub_idea_0.0.1_text" [width=1.736111111111111, height=1.736111111111111, shape=rectangle, label="", style="filled", fillcolor="#e8ee7b"]
        "sub_idea_0.1_title" [width=3.888888888888889, height=0.7291666666666666, shape=rectangle, label="", style="filled", fillcolor="#d1ee7b"]
        "sub_idea_0.1_text" [width=2.4305555555555554, height=2.4305555555555554, shape=rectangle, label="", style="filled", fillcolor="#d1ee7b"]
        "sub_idea_0.1.0_title" [width=2.7777777777777777, height=0.5208333333333333, shape=rectangle, label="", style="filled", fillcolor="#a3ee7b"]
        "sub_idea_0.1.0_text" [width=1.736111111111111, height=1.736111111111111, shape=rectangle, label="", style="filled", fillcolor="#a3ee7b"]
        "sub_idea_0.1.1_title" [width=2.7777777777777777, height=0.5208333333333333, shape=rectangle, label="", style="filled", fillcolor="#8cee7b"]
        "sub_idea_0.1.1_text" [width=1.736111111111111, height=1.736111111111111, shape=rectangle, label="", style="filled", fillcolor="#8cee7b"]
        "sub_idea_0_title" -> "sub_idea_0_text" [penwidth=5]
        "sub_idea_0_title" -> "sub_idea_0.0_title" [penwidth=5]
        "sub_idea_0_title" -> "sub_idea_0.1_title" [penwidth=5]
        "sub_idea_0.0_title" -> "sub_idea_0.0_text" [penwidth=5]
        "sub_idea_0.0_title" -> "sub_idea_0.0.0_title" [penwidth=5]
        "sub_idea_0.0_title" -> "sub_idea_0.0.1_title" [penwidth=5]
        "sub_idea_0.0.0_title" -> "sub_idea_0.0.0_text" [penwidth=5]
        "sub_idea_0.0.1_title" -> "sub_idea_0.0.1_text" [penwidth=5]
        "sub_idea_0.1_title" -> "sub_idea_0.1_text" [penwidth=5]
        "sub_idea_0.1_title" -> "sub_idea_0.1.0_title" [penwidth=5]
        "sub_idea_0.1_title" -> "sub_idea_0.1.1_title" [penwidth=5]
        "sub_idea_0.1.0_title" -> "sub_idea_0.1.0_text" [penwidth=5]
        "sub_idea_0.1.1_title" -> "sub_idea_0.1.1_text" [penwidth=5]
    }
    subgraph clustergroup_1 {
        "sub_idea_1_title" [width=4.444444444444445, height=0.8333333333333333, shape=rectangle, label="", style="filled", fillcolor="#7beeba"]
        "sub_idea_1_text" [width=2.7777777777777777, height=2.7777777777777777, shape=rectangle, label="", style="filled", fillcolor="#7beeba"]
        "sub_idea_1.0_title" [width=3.888888888888889, height=0.7291666666666666, shape=rectangle, label="", style="filled", fillcolor="#7beed1"]
        "sub_idea_1.0_text" [width=2.4305555555555554, height=2.4305555555555554, shape=rectangle, label="", style="filled", fillcolor="#7beed1"]
        "sub_idea_1.0.0_title" [width=2.7777777777777777, height=0.5208333333333333, shape=rectangle, label="", style="filled", fillcolor="#7bddee"]
        "sub_idea_1.0.0_text" [width=1.736111111111111, height=1.736111111111111, shape=rectangle, label="", style="filled", fillcolor="#7bddee"]
        "sub_idea_1.0.1_title" [width=2.7777777777777777, height=0.5208333333333333, shape=rectangle, label="", style="filled", fillcolor="#7bc6ee"]
        "sub_idea_1.0.1_text" [width=1.736111111111111, height=1.736111111111111, shape=rectangle, label="", style="filled", fillcolor="#7bc6ee"]
        "sub_idea_1.1_title" [width=3.888888888888889, height=0.7291666666666666, shape=rectangle, label="", style="filled", fillcolor="#817bee"]
        "sub_idea_1.1_text" [width=2.4305555555555554, height=2.4305555555555554, shape=rectangle, label="", style="filled", fillcolor="#817bee"]
        "sub_idea_1.1.0_title" [width=2.7777777777777777, height=0.5208333333333333, shape=rectangle, label="", style="filled", fillcolor="#987bee"]
        "sub_idea_1.1.0_text" [width=1.736111111111111, height=1.736111111111111, shape=rectangle, label="", style="filled", fillcolor="#987bee"]
        "sub_idea_1.1.1_title" [width=2.7777777777777777, height=0.5208333333333333, shape=rectangle, label="", style="filled", fillcolor="#c67bee"]
        "sub_idea_1.1.1_text" [width=1.736111111111111, height=1.736111111111111, shape=rectangle, label="", style="filled", fillcolor="#c67bee"]
        "sub_idea_1_title" -> "sub_idea_1_text" [penwidth=5]
        "sub_idea_1_title" -> "sub_idea_1.0_title" [penwidth=5]
        "sub_idea_1_title" -> "sub_idea_1.1_title" [penwidth=5]
        "sub_idea_1.0_title" -> "sub_idea_1.0_text" [penwidth=5]
        "sub_idea_1.0_title" -> "sub_idea_1.0.0_title" [penwidth=5]
        "sub_idea_1.0_title" -> "sub_idea_1.0.1_title" [penwidth=5]
        "sub_idea_1.0.0_title" -> "sub_idea_1.0.0_text" [penwidth=5]
        "sub_idea_1.0.1_title" -> "sub_idea_1.0.1_text" [penwidth=5]
        "sub_idea_1.1_title" -> "sub_idea_1.1_text" [penwidth=5]
        "sub_idea_1.1_title" -> "sub_idea_1.1.0_title" [penwidth=5]
        "sub_idea_1.1_title" -> "sub_idea_1.1.1_title" [penwidth=5]
        "sub_idea_1.1.0_title" -> "sub_idea_1.1.0_text" [penwidth=5]
        "sub_idea_1.1.1_title" -> "sub_idea_1.1.1_text" [penwidth=5]
    }
    }


  subgraph clusterwrap1 {
    subgraph clustergroup_2 {
        "sub_idea_2_title" [width=4.444444444444445, height=0.8333333333333333, shape=rectangle, label="", style="filled", fillcolor="#dd7bee"]
        "sub_idea_2_text" [width=2.7777777777777777, height=2.7777777777777777, shape=rectangle, label="", style="filled", fillcolor="#dd7bee"]
        "sub_idea_2.0_title" [width=3.888888888888889, height=0.7291666666666666, shape=rectangle, label="", style="filled", fillcolor="#ee7baf"]
        "sub_idea_2.0_text" [width=2.4305555555555554, height=2.4305555555555554, shape=rectangle, label="", style="filled", fillcolor="#ee7baf"]
        "sub_idea_2.0.0_title" [width=2.7777777777777777, height=0.5208333333333333, shape=rectangle, label="", style="filled", fillcolor="#ee7b98"]
        "sub_idea_2.0.0_text" [width=1.736111111111111, height=1.736111111111111, shape=rectangle, label="", style="filled", fillcolor="#ee7b98"]
        "sub_idea_2.0.1_title" [width=2.7777777777777777, height=0.5208333333333333, shape=rectangle, label="", style="filled", fillcolor="#baee7b"]
        "sub_idea_2.0.1_text" [width=1.736111111111111, height=1.736111111111111, shape=rectangle, label="", style="filled", fillcolor="#baee7b"]
        "sub_idea_2.1_title" [width=3.888888888888889, height=0.7291666666666666, shape=rectangle, label="", style="filled", fillcolor="#7beee8"]
        "sub_idea_2.1_text" [width=2.4305555555555554, height=2.4305555555555554, shape=rectangle, label="", style="filled", fillcolor="#7beee8"]
        "sub_idea_2.1.0_title" [width=2.7777777777777777, height=0.5208333333333333, shape=rectangle, label="", style="filled", fillcolor="#af7bee"]
        "sub_idea_2.1.0_text" [width=1.736111111111111, height=1.736111111111111, shape=rectangle, label="", style="filled", fillcolor="#af7bee"]
        "sub_idea_2.1.1_title" [width=2.7777777777777777, height=0.5208333333333333, shape=rectangle, label="", style="filled", fillcolor="#ee7b81"]
        "sub_idea_2_title" -> "sub_idea_2_text" [penwidth=5]
        "sub_idea_2_title" -> "sub_idea_2.0_title" [penwidth=5]
        "sub_idea_2_title" -> "sub_idea_2.1_title" [penwidth=5]
        "sub_idea_2.0_title" -> "sub_idea_2.0_text" [penwidth=5]
        "sub_idea_2.0_title" -> "sub_idea_2.0.0_title" [penwidth=5]
        "sub_idea_2.0_title" -> "sub_idea_2.0.1_title" [penwidth=5]
        "sub_idea_2.0.0_title" -> "sub_idea_2.0.0_text" [penwidth=5]
        "sub_idea_2.0.1_title" -> "sub_idea_2.0.1_text" [penwidth=5]
        "sub_idea_2.1_title" -> "sub_idea_2.1_text" [penwidth=5]
        "sub_idea_2.1_title" -> "sub_idea_2.1.0_title" [penwidth=5]
        "sub_idea_2.1_title" -> "sub_idea_2.1.1_title" [penwidth=5]
        "sub_idea_2.1.0_title" -> "sub_idea_2.1.0_text" [penwidth=5]
        "sub_idea_2.1.1_title" -> "sub_idea_2.1.1_text" [penwidth=5]
    }
    subgraph clustergroup_3 {
        "sub_idea_2.1.1_text" [width=1.736111111111111, height=1.736111111111111, shape=rectangle, label="", style="filled", fillcolor="#ee7b81"]
        "sub_idea_3_title" [width=4.444444444444445, height=0.8333333333333333, shape=rectangle, label="", style="filled", fillcolor="#e8ee7b"]
        "sub_idea_3_text" [width=2.7777777777777777, height=2.7777777777777777, shape=rectangle, label="", style="filled", fillcolor="#e8ee7b"]
        "sub_idea_3.0_title" [width=3.888888888888889, height=0.7291666666666666, shape=rectangle, label="", style="filled", fillcolor="#d1ee7b"]
        "sub_idea_3.0_text" [width=2.4305555555555554, height=2.4305555555555554, shape=rectangle, label="", style="filled", fillcolor="#d1ee7b"]
        "sub_idea_3.0.0_title" [width=2.7777777777777777, height=0.5208333333333333, shape=rectangle, label="", style="filled", fillcolor="#a3ee7b"]
        "sub_idea_3.0.0_text" [width=1.736111111111111, height=1.736111111111111, shape=rectangle, label="", style="filled", fillcolor="#a3ee7b"]
        "sub_idea_3.0.1_title" [width=2.7777777777777777, height=0.5208333333333333, shape=rectangle, label="", style="filled", fillcolor="#8cee7b"]
        "sub_idea_3.0.1_text" [width=1.736111111111111, height=1.736111111111111, shape=rectangle, label="", style="filled", fillcolor="#8cee7b"]
        "sub_idea_3.1_title" [width=3.888888888888889, height=0.7291666666666666, shape=rectangle, label="", style="filled", fillcolor="#7beeba"]
        "sub_idea_3.1_text" [width=2.4305555555555554, height=2.4305555555555554, shape=rectangle, label="", style="filled", fillcolor="#7beeba"]
        "sub_idea_3.1.0_title" [width=2.7777777777777777, height=0.5208333333333333, shape=rectangle, label="", style="filled", fillcolor="#7beed1"]
        "sub_idea_3.1.0_text" [width=1.736111111111111, height=1.736111111111111, shape=rectangle, label="", style="filled", fillcolor="#7beed1"]
        "sub_idea_3.1.1_title" [width=2.7777777777777777, height=0.5208333333333333, shape=rectangle, label="", style="filled", fillcolor="#7bddee"]
        "sub_idea_3.1.1_text" [width=1.736111111111111, height=1.736111111111111, shape=rectangle, label="", style="filled", fillcolor="#7bddee"]
        "sub_idea_3_title" -> "sub_idea_3_text" [penwidth=5]
        "sub_idea_3_title" -> "sub_idea_3.0_title" [penwidth=5]
        "sub_idea_3_title" -> "sub_idea_3.1_title" [penwidth=5]
        "sub_idea_3.0_title" -> "sub_idea_3.0_text" [penwidth=5]
        "sub_idea_3.0_title" -> "sub_idea_3.0.0_title" [penwidth=5]
        "sub_idea_3.0_title" -> "sub_idea_3.0.1_title" [penwidth=5]
        "sub_idea_3.0.0_title" -> "sub_idea_3.0.0_text" [penwidth=5]
        "sub_idea_3.0.1_title" -> "sub_idea_3.0.1_text" [penwidth=5]
        "sub_idea_3.1_title" -> "sub_idea_3.1_text" [penwidth=5]
        "sub_idea_3.1_title" -> "sub_idea_3.1.0_title" [penwidth=5]
        "sub_idea_3.1_title" -> "sub_idea_3.1.1_title" [penwidth=5]
        "sub_idea_3.1.0_title" -> "sub_idea_3.1.0_text" [penwidth=5]
        "sub_idea_3.1.1_title" -> "sub_idea_3.1.1_text" [penwidth=5] 
    }
  }
// 0 and 1 are now over/under
// 2 and 3 are also over & under
    "sub_idea_0_title" -> "main_idea_title"  [penwidth=5]
    "sub_idea_2_title" -> "main_idea_title"  [penwidth=5]

   // minlen is not specific to these graphs, should work for most inputs
   "sub_idea_0_title" ->  "sub_idea_1_title"  [minlen=8 style=invis]
   "sub_idea_2_title" ->  "sub_idea_3_title"  [minlen=8 style=invis] 

    "main_idea_title" -> "sub_idea_1_title" [penwidth=5]
    "main_idea_title" -> "sub_idea_3_title" [penwidth=5]
// next two lines are optional
//    "main_idea_text" -> "sub_idea_1_title" [style=invis]
//    "main_idea_text" -> "sub_idea_3_title" [style=invis]
}

Giving:

1 Like