In this post I’ll discuss how to plot data points on a shapefile. In a previous post I discussed how to install basemap using pip, the package manager for Python. Since
basemap is an extension of
matplotlib, we have a lot of familiar plotting functions and options at our disposal. Of particular importance is the ability to use projection data in plotting the shapefile, and plotting the data points.
import numpy as np import scipy.stats from mpl_toolkits.basemap import Basemap
After we import what we need, we can create a map object,
m, with some projection. Here, we’ve used the Miller cylindrical projection, which is better for stuff nearer the equator than the poles.
Next, we call the
readshapefile() method of the map object,
m, to incorporate the data from the shapefile. Then, after generating some uniformly distributed data points, we call the
scatter() method of the map object to plot the data points.
# the map, a Miller Cylindrical projection m = Basemap(projection='mill', llcrnrlon=-104. ,llcrnrlat=28, urcrnrlon=-96. ,urcrnrlat=34.) # incorporate the shapefile s = m.readshapefile('./Texas_Counties', 'texascounties') # generate some points x = scipy.stats.uniform(-102,2).rvs(3) y = scipy.stats.uniform(30,2).rvs(3) # superimpose the points on the shapefile m.scatter( x, y, marker='o', facecolor='none', edgecolor='b', alpha=0.5, latlon=True )
latlon=True argument of the
scatter() function is particularly important. This informs
scatter() that the data points should be interpreted as latitude and longitude. Beyond that, the rest of the
scatter() arguments are familiar from the