In this case, the technique is very close from a choropleth map. It's actually exactly the same, except that the geoJson input gives hexagon boundaries instead of region boundaries. Thus, you probably want to visit the choropleth section for more examples.Choropleth section
In this case, the required input is a list of coordinates. The map area is split in a multitude of hexagons with
geom_hex() (or squares with
geom_bin2d()), the number of data point per hexagon is counted and represented as a color. It is actually a density 2d technique plotted on top of a map.