Added in matplotlib graphing and a random state setter. Still not happy
with the map implementation.  There are plenty of #TODOs to resolve.