# Contoured basemap

Hi,

its been a while but it might help to make Ben's description more specific w.r.t. binning the
data to obtain a z-value array of suitable dimension from irregular data. Starting point
are the following variables:

gmax, gmay: lists (or arrays) of irregular data point coordinates (possibly already in the desired projection)
gmaVal: list of respective z-values.

The following snippet creates a contour line plot with interpolating colours between the contour lines:

SNIPPET:
xi = numpy.linspace(min(gmax),max(gmax),500)
yi = numpy.linspace(min(gmay),max(gmay),500)
zi = griddata(gmax,gmay,gmaVal,xi,yi,interp='nn')
CS = pyplot.contour (xi,yi,zi,15,colors='grey',linewidths=0.1)
CS = pyplot.contourf(xi,yi,zi,15,cmap=cm.get_cmap("jet"))

The number 500 is arbitrary and should suit your desired resolution.

Look up the function "griddata" in:
from matplotlib.mlab import griddata
for which you quickly find descriptions in the web under the key words "irregularly spaced data".
This is a topic in itself.

In most (non-pathologic) cases it probably makes no differerence whether interpolating in projected
coords or in lon-lat.

Regards
Daniel

ยทยทยท

On Thursday, January 20, 2011, Jeff Whitaker <jswhit@...146...> wrote:

On 1/20/11 2:31 PM, R. Mitra wrote:

Hi
? ? ?I have a set of records with known lat long. ?I want to show the
concentration of the records with a contour diagram on a world map in
any projection. It cannot spill over to the oceans. I know I have to
use basemap. ?Is there a quick recipe somewhere I can follow to give
me a desired output. ?I have gone through earlier posts on this board
but cannot find the right one. ?Any pointers would be very helpful.
Many thanks.
Best
Mitra

Mitra: ?The basic procedure is this:

1) load you data into 2d numpy arrays (lats, lons, data). ?lats and lons
must be in degrees (not radians).
2) create a Basemap instance (called "map") for the desired projection.
3) calculate the map projection coordinates of your grid with x,y =
map(lons,lats)
4) contour your data with the contourf method (map.contourf).
5) draw coastlines with the coastlines method.
6) draw lat/lon lines with the drawparallels and drawmeridians methods.

There are many examples of this in the basemap examples directory.

-Jeff

In order to contour, you will need some sort z-value to contour. This
means you need to bin your data. You could use numpy's hist2d, or (I
prefer) matplotlib's hexbin().

I hope that helps!
Ben Root