# Adding Data Points to Shapefiles

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

# 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 )
```

The `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 `matplotlib` library. This site uses Akismet to reduce spam. Learn how your comment data is processed.