There are some tricks that you can try, listed below. The layouting itself is performed by GraphViz (dot layouting iirc), and GraphViz simply does this sometimes. Graph layouting is a NP-complete problem, so algorithms usually take harsh shortcuts.
Typical workarounds that I've seen or used include:
- adding hidden lines
a -[hidden]- b
- extending the length of a line
a --- b
(more dashes, longer line)
- specifying preferred direction of lines (
a -left- b
)
- swapping association ends (
a -- b
→ b -- a
)
- changing the order of definitions (the order does matter... sometimes)
- adding empty nodes with background/border colors set to Transparent
So if you really want to have a nice layout, you'll need to put some elbow grease in, but keep in mind that the layout will be still brittle -- if you add/remove items, you might need to redo it again.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…