Without either input or output, it’s hard to say much. If you can produce canon or dot output type and share it, that would help (recreating your input).
- One off-the-wall idea: try twopi and circo.
- A half-baked off-the-wall idea: to stop dot from being to efficient with space, embed each parent node and its children in a cluster - and include subsequent clusters within that cluster.
I.e. nested clusters out the wazoo.
I’ve never tried this, but have some hope for the idea.