Here is a hit with geom_hex and stat_density2d. The idea of creating baskets by trimming the coordinates makes me a little complicated.
You have the count data with lat / longs, which means that ideally you need a weight parameter, but as far as I know, this is not implemented using geom_hex. Instead, we crack it by repeating the lines in the count variable, similar to the approach here .
## hack job to repeat records to full count m<-as.data.frame(m) m_long <- with(m, m[rep(1:nrow(m), Count),]) ## stat_density2d ggplot(m_long, aes(Lat, Lon)) + stat_density2d(aes(alpha=..level.., fill=..level..), size=2, bins=10, geom=c("polygon","contour")) + scale_fill_gradient(low = "blue", high = "red") + geom_density2d(colour="black", bins=10) + geom_point(data = m_long) ## geom_hex alternative bins=6 ggplot(m_long, aes(Lat, Lon)) + geom_hex(bins=bins)+ coord_equal(ratio = 1/1)+ scale_fill_gradient(low = "blue", high = "red") + geom_point(data = m_long,position = "jitter")+ stat_binhex(aes(label=..count..,size=..count..*.5), size=3.5,geom="text", bins=bins, colour="white")
They accordingly produce the following:
And the empty version: 
EDIT:
With database:
map + stat_density2d(data = m_long, aes(x = Lon, y = Lat, alpha=..level.., fill=..level..), size=2, bins=10, geom=c("polygon","contour"), inherit.aes=FALSE) + scale_fill_gradient(low = "blue", high = "red") + geom_density2d(data = m_long, aes(x = Lon, y=Lat), colour="black", bins=10,inherit.aes=FALSE) + geom_point(data = m_long, aes(x = Lon, y=Lat),inherit.aes=FALSE) ## and the hexbin map... map + #ggplot(m_long, aes(Lat, Lon)) + geom_hex(bins=bins,data = m_long, aes(x = Lon, y = Lat),alpha=.5, inherit.aes=FALSE) + geom_point(data = m_long, aes(x = Lon, y=Lat), inherit.aes=FALSE,position = "jitter")+ scale_fill_gradient(low = "blue", high = "red")

