As I was reading that I was going to comment on using graphviz, have used that before.