A Density Heat Map in Stata

To create a density heat map in Stata you need four commands – spgrid, spkde, grmap, and mylabels. The grmap command is native to Stata.

You can download the three non-native commands from the SSC within Stata using the following commands:

ssc install spgrid

ssc install spkde

ssc install mylabels

To generate this graph in Stata, use the following commands:

. sysuse auto, clear

. summarize price mpg

. clonevar x = mpg

. clonevar y = price

. replace x = (x-0) / (50-0)

. replace y = (y-0) / (20000-0)

. mylabels 0(10)50, myscale((@-0) / (50-0)) local(XLAB)

. mylabels 0(5000)20000, myscale((@-0) / (20000-0)) local(YLAB)

. keep x y

. save xy.dta, replace

  . spgrid, shape(hexagonal) xdim(100) xrange(0 1) yrange(0 1) dots replace cells("2D-GridCells.dta") points("2D-GridPoints.dta")

  . spkde using "2D-GridPoints.dta", xcoord(x) ycoord(y) bandwidth(fbw) fbw(0.1) dots saving("2D-Kde.dta", replace)

. use "2D-Kde.dta", clear

. recode lambda (.=0)

  . grmap lambda using "2D-GridCells.dta", id(spgrid_id) clnum(20) fcolor(Rainbow) ocolor(none ..) legend(off) point(data("xy.dta") x(x) y(y)) freestyle aspectratio(1) xtitle(" " "Mileage (mpg)") xlab( `XLAB’) ytitle(" " "Price ({c S|}US)") ylab(`YLAB’, angle(0))