This type of clustering is a bit dubious but, there is a work flow that you could follow in statistical software such as R. Sorry, there is no clear "no code" solution other than the advice that you muck with symbology to find breaks in the counts. This however, does not account for spatial clustering.
Here is a worked example illustrating why you do not want to cluster the data using just the counts.
library(spatialEco)
library(sp)
data(meuse)
coordinates(meuse) <- ~x+y
First we create some polygons and random points to emulate your data.
hex <- hexagons(meuse, res=100)
pts <- spsample(hex, n=10000, type="random")
pts <- SpatialPointsDataFrame(pts, data.frame(ID=1:length(pts)))
pts.hex <- point.in.poly(pts, hex)
pt.count <- tapply(pts.hex$ID, pts.hex$HEXID, length)
We need to account for polygons with no points.
na.idx <- which(!rownames(hex@data) %in% names(pt.count))
if(length(na.idx) > 0) {
pt.count <- insert.values(pt.count, 0, na.idx)
hex@data$count <- pt.count
hex@data$count <- ifelse(hex@data$count < 2, 0, hex@data$count)
} else {
hex@data$count <- pt.count
}
#plot counts
spplot(hex, "count")
Here we create k-means clusters with k=3 using both counts and coordinates to define the clusters then we plot our results.
clust <- kmeans( scale(cbind(coordinates(hex), hex@data$count)), 3 )$cluster
hex@data$k3 <- clust
spplot(hex, "k3")
Now we the clusters using k=3 and count only to define our clusters.
clust <- kmeans( scale(hex@data$count), 3 )$cluster
hex@data$k3count <- clust
spplot(hex, "k3count")
As you can see, including the spatial coordinates constrains the clustering in a way that a univariate (count only) does not thus, resulting in more spatially uniform and congruent results.