On 8/20/12 8:21 PM, Scott Henderson wrote:
> On Mon 20 Aug 2012 06:29:01 PM EDT, Jeff Whitaker wrote:
>> On 8/20/12 4:41 PM, Scott Henderson wrote:
>>> I'm having trouble with transform_scalar() and imshow() with basemap.
>>> Essential I have data from satellite tracks that are either smaller
>>> or larger than the map extent, so I don't want to use
>>> Basemap.imshow() which sets the 'extent' keyword automatically.
>>>
>>> I tried following the following suggestion, but I can't get things to
>>> line up..
>>> http://comments.gmane.org/gmane.comp.python.matplotlib.general/25085
>>>
>>> I suspect I've done something wrong in the code below?:
>>
>> Scott:  If you use the pcolormesh or contourf Basemap methods (instead
>> of imshow), you can specify the map projection coordinates of your
>> data and it will be plotted correctly (whether or not it covers the
>> whole map projection region).
>>
>> -Jeff
>>>
>>>
>>> # -------------------------------
>>> from mpl_toolkits.basemap import Basemap
>>> import matplotlib.pyplot as plt
>>>
>>> LL = (-68, -26)
>>> UR = (-66, -21)
>>> bmap = Basemap(projection='merc',
>>>                llcrnrlat=LL[1],
>>>                urcrnrlat=UR[1],
>>>                llcrnrlon=LL[0],
>>>                urcrnrlon=UR[0],
>>>                resolution='i',
>>>                suppress_ticks=False,
>>>                ax=ax)
>>> bmap.drawcountries(linewidth=1)
>>>
>>> # Overlay image with extents that don't match map boundaries
>>> nLon, nLat = image.shape
>>> LL = (-69.915, -31.161)
>>> UR = (-65.075, -17.334)
>>> dy = -0.006666664
>>> lats = UR[1] + dy * np.arange(nLat)
>>> extent = (LL[0], UR[0], LL[1], UR[1])
>>> nx = nLon; ny = nLat
>>> image_xy = bmap.transform_scalar(image, lons, lats[::-1], nx, ny)
>>> x, y = bmap(extent[:2],extent[2:])
>>> extent_xy = (x[0], x[1], y[0], y[1])
>>> im = plt.imshow(image_xy, extent=extent_xy)
>>>
>>>
>>>
>>> -- 
>>> ---------------
>>> Scott T. Henderson
>>> http://www.geo.cornell.edu/eas/gstudent/sth54/contact.html
>>>
>>>
>>> ------------------------------------------------------------------------------
>>>  
>>>
>>> Live Security Virtual Conference
>>> Exclusive live event will cover all the ways today's security and
>>> threat landscape has changed and how IT managers can respond. 
>>> Discussions
>>> will include endpoint security, mobile security and the latest in 
>>> malware
>>> threats.http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
>>>
>>>
>>> _______________________________________________
>>> Matplotlib-users mailing list
>>> Matplotlib-users@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>>
>>
>> -- 
>> Jeffrey S. Whitaker         Phone  : (303)497-6313
>> Meteorologist               FAX    : (303)497-6449
>> NOAA/OAR/PSD  R/PSD1        Email  :jeffrey.s.whita...@noaa.gov
>> 325 Broadway                Office : Skaggs Research Cntr 1D-113
>> Boulder, CO, USA 80303-3328 Web    :http://tinyurl.com/5telg
>
> Thanks Jeff,
>
> pcolormesh seems to get the georeferencing correct. Why is it that 
> imshow doesn't work? The trouble with pcolormesh is that it's much 
> slower, the file sizes get bigger and when zooming into detailed 
> regions the pixels edges show up even when I set edgecolors='None'. 
> I've attached a few screenshots for comparison.

Scott: That's weird - I don't know why the edges show.  The only thing 
you're getting with imshow is interpolation.  To use imshow, you need to 
have a grid that exactly fits the map projection region.  You could do 
this with transform_scalar using the keyword masked=True, which will 
assign missing values to grid points outside the range of the input 
grid.  When you plot with imshow, these areas should just show up as 
transparent.

-Jeff
>
> # New version:
> # -------------------
> data_xy, x, y = bmap.transform_scalar(data[::-1], lons, lats[::-1], 
> nx, ny, returnxy=True)
> data_xym =  np.ma.array(data_xy, mask=np.isnan(data_xy))
> im = bmap.pcolormesh(x,y,data_xym,
>                     shading='flat', #'gouraud'
>                     edgecolors='None',
>                     alpha=alpha,
>                     vmin=cmin,
>                     vmax=cmax)
> plt.colorbar(im)
>
>
> # Different figures attached
>
>
>
> -- 
> ---------------
> Scott T. Henderson
> http://www.geo.cornell.edu/eas/gstudent/sth54/contact.html
>


------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to