> On Thursday, January 20, 2011, Jeff Whitaker <jsw...@fastmail.fm> 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


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

------------------------------------------------------------------------------
Special Offer-- Download ArcSight Logger for FREE (a $49 USD value)!
Finally, a world-class log management solution at an even better price-free!
Download using promo code Free_Logger_4_Dev2Dev. Offer expires 
February 28th, so secure your free ArcSight Logger TODAY! 
http://p.sf.net/sfu/arcsight-sfd2d
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to