Stata has some (arguably limited) mapping abilities. Two main packages enable mapping in Stata -- spmap and maptile. On its own, spmap may be a bit cumbersome to use; maptile works with spmap for a slightly smoother mapping process.
(Note: If you want to make publication-quality maps, we strongly encourage you to consider using a system that is designed for spatial work such as ArcGIS or qGIS. Contact Kristin Bott for more information about spatial analysis + mapmaking.)
Below is an example of maptile, using the built-in census dataset. This map shows median age, using state as the geographical "container" for visualization. The specifications in the spopt() command control where the legend is placed on the map (pos 4 = 4 o'clock; ring 1 = distance from the plot region.)
ssc install maptile
ssc install spmap
rename (state state2) (statename state)
maptile medage, geo(state) spopt(legend(pos(4) ring(1) ))