Use GraphViz!
The best solution I know and often use are the programs in the GraphViz collection. GraphViz
- Can draw any graphs (includes flowcharts, UML and other diagrams)
- Is available under GNU/Linux (package name: graphviz)
- Has a FLOSS licence (Common public licence 1.0)
Similar to LaTeX, instead of drawing by hand you type what you need. The program compiles your file and distributes the nodes automatically. There are even more programs for different arrangements!
If you want to edit the structure later: Export it as an svg and edit the nodes with a vector graphics program like Inkscape.
Don't worry about the learning curve! The language/format is really very simple. It takes as with any other new program about one hour to learn. Here is a short example:
Animal [
label = "{Animal|+ name : string\l+ age : int\l|+ die() : void\l}"
]
compiles to

Here is a simple tutorial on creating UML diagrams and since GraphViz is a general graph layout generating software have a look at this introduction which gives an even more detailed explanation.
I hope this helps you :)