Sebastian Krieger wrote:
> Dear all!
>
> I would like to ask two questions: one concerning imshow with the 
> Robinson projection and the second about the latitude limits for the 
> same map projection.
>
> First, I am trying to make a Robinson projection map using imshow 
> instead of contourf as described in the Basemap documentation. I 
> modified the script as follows:
>
>     #----------------------------------------------------------------------
>     from matplotlib.toolkits.basemap import Basemap, shiftgrid
>     from pylab import load, meshgrid, title, arange, show, cm, pi
>     #
>     # read in topo data (on a regular lat/lon grid)
>     etopo = load('etopo20data.gz')
>     lons  = load('etopo20lons.gz')
>     lats  = load('etopo20lats.gz')
>     #
>     # create Basemap instance for Robinson projection.
>     m = Basemap(projection='robin',lon_0=0.5*(lons[0]+lons[-1]))
>     #
>     # compute native map projection coordinates for lat/lon grid.
>     etopo, lons = shiftgrid(180., etopo, lons, start=False)
>     x, y = m(*meshgrid(lons,lats))
>     dx = 2.*pi*m.rmajor/len(lons)
>     nx = int((m.xmax-m.xmin)/dx)+1; ny = int((m.ymax-m.ymin)/dx)+1
>     dat, x, y = m.transform_scalar(etopo, lons, lats, nx, ny,
>     returnxy=True)
>     #
>     # make filled contour plot.
>     im = m.imshow(dat, cmap=cm.jet)
>     m.drawcoastlines() # draw coastlines
>     m.drawmapboundary() # draw a line around the map region
>     m.drawparallels(arange(-90.,120.,30.),labels=[1,0,0,0]) # draw
>     parallels
>     m.drawmeridians(arange(0.,420.,60.),labels=[0,0,0,1]) # draw meridians
>     title('Robinson Projection') # add a title
>     show()
>     #----------------------------------------------------------------------
>
>
> The result looks as I would expect, except that some data is plot 
> outside of the map boundaries. Using another projection as the 
> Orthographic for example, this problem doesn't happen. Am I doing 
> something wrong?

Sebastian:  The Robinson projection is non-rectangular, so it's not 
straightforward to plot an image on it.  You would somehow have to mask 
the points outside the projection limb (this is what happens for the 
'ortho' projection).  It's much easier just to use pcolor, for example

from matplotlib.toolkits.basemap import Basemap, shiftgrid
from pylab import load, meshgrid, title, arange, show, cm, pi
# read in topo data (on a regular lat/lon grid)
etopo = load('etopo20data.gz')
lons  = load('etopo20lons.gz')
lats  = load('etopo20lats.gz')
# create Basemap instance for Robinson projection.
m = Basemap(projection='robin',lon_0=0.5*(lons[0]+lons[-1]))
x,y = m(*meshgrid(lons,lats))
p = m.pcolormesh(x,y,etopo,shading='flat')
m.drawcoastlines() # draw coastlines
m.drawmapboundary() # draw a line around the map region
m.drawparallels(arange(-90.,120.,30.),labels=[1,0,0,0]) # draw parallels
m.drawmeridians(arange(0.,420.,60.),labels=[0,0,0,1]) # draw meridians
title('Robinson Projection') # add a title
show()

>
> Second, I work with Topex/POSEIDON and Jason-1 sea surface height 
> anomalies datasets where the latitudes range from about 67.5S to 
> 67.5N. Outside these limits hopefully its blank, as anyone would 
> expect. Aesthetically I find it more appealing if I could limit my map 
> boundaries to these limits, or even lower limits if I zoom the 
> equatorial region. Has anyone ever tried to do this?

You can't with the Robinson projection, it's only defined globally.  You 
could do it with the Mercator ('merc'), Miller ('mill') or Cylindrical 
Equidistant ('cyl') projections by specifying the lat/lon values of the 
upper right and lower left corners. 
>
> Thank's in advance and kind regards,
> Sebastian
HTH,

-Jeff

-- 
Jeffrey S. Whitaker         Phone : (303)497-6313
NOAA/OAR/CDC  R/PSD1        FAX   : (303)497-6449
325 Broadway                Boulder, CO, USA 80305-3328


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to