Connecting node centers with labels outside nodes

On a bet, I suppose it could be done, but no guarantees. (The edge routing is probably the hardest part):

  • Explicitly (programmatically) position all nodes (pos | Graphviz), labels (lp | Graphviz), and clusters (bb | Graphviz)
  • Explicitly position “center pin” node on-top-of circular node (again pos | Graphviz)
  • Use neato -n (pos | Graphviz) to have neato just route edges. (use splines=ortho and edge [dir=both arrowhead=none arrowtail=none headclip=false tailclip=false] to go center-to-center)
  • Either:
    • Invoke religious icons in hopes that splines=ortho provides “nice” edge routing. (splines=ortho can be disappointing)
    • Explicitly route all edges yourself (poorly described here: Fun with edges!). Doable (maybe) but a bit of a pain.

Before doing the above, look at the PIC language (PIC (markup language) - Wikipedia). I like the pikchr & dpic variants.