You can also use a syntax similar to Graphviz' dot language within TikZ, and either position the nodes manually or, as with Graphviz, let TikZ position them automatically with a choice of layout algorithms. You use LuaTeX, and the layout is calculated by a Lua program:
Interesting! I've seen things like that before with TikZ, but they required enabling \write18, which I didn't want to do. Using LuaTex support sounds much more appealing. I'll have to give that a try next time I build a diagram.
https://lwn.net/Articles/640302/
So you can get the best of both worlds, doing everything within TikZ/LuaLaTeX.