Thanks for the inspiration! As sometimes happens, I did some looking and didn't find anything in particular which lead me to some explorations.
After a few false starts, I have come up with this approach that uses some custom force directed stuff:
Obviously, even with the small amount of test data, the approach starts to fall down... however, there is something useful there, I think.
It is in the "reusable charts" pattern, which is a bit harder to read than a straight one-file job, which can seen in the gist history, but one can find the bulk of the work is in
_build_nodes and
_tick. I've left a few api points for doing custom rules, but it still pretty primitive.
Let me know what you think!
Cheers,
nick