When creating a specific program that does one thing it is sometimes useful to provide a generic solution and build upon those foundations. This is what I present in todays posting, what I call graphing .
Graphviz  is a great tool that allows you to create diagrams and flow-charts and almost any type of graph. I wont go into the details about Graphviz as this is not a tutorial, the site has more details.
What I have done is create a parser that converts a .gv file (e.g., [3, 4]) into a dot file (through the dot package) and then this is read to create the layout on a Tkinter Canvas in Python. The advantage to this is that you can add your own code and make these items interactive (e.g. mouse interactive, etc). You will need to install at least dot which is part of Graphviz.
Graphviz (dot is needed)
Tkinter part of Python
 graphing by Konstantinos Xynos (2008) – http://www.comp.glam.ac.uk/staff/kxynos/dot_parser2Tk.zip
 Graphviz – http://www.graphviz.org/
 Example: Finite Automaton – http://www.graphviz.org/Gallery/directed/fsm.html
 Example: Finite Automaton gv file – http://www.graphviz.org/Gallery/directed/fsm.gv.txt