You could try creating a Quadtree representation of the data. The shorter paths in the graph would correspond to high density areas.
Or, to put it more clearly: given a Quadtree and level-order traversal, each lower-level node composed of "dots" would represent a high density area. As the level of the nodes increases, such nodes represent lower density areas of "dots"