This is a test of how to use d3 and canvas with transitions and mouse events. Rather than using d3's data binding to DOM nodes, this uses simple javascript objects as a data model to back the visualization.
Mouse events are handled using a brute-force search through all nodes to find the closest node to the mouse. This is sufficiently fast for this example, but a more efficient method is possible using d3's quadtree.