Revision: 4519
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4519&view=rev
Author: jswhit
Date: 2007-11-30 06:36:43 -0800 (Fri, 30 Nov 2007)
Log Message:
-----------
no Float32 anymore
Modified Paths:
--------------
trunk/toolkits/basemap/examples/pnganim.py
trunk/toolkits/basemap/examples/warpimage.py
Modified: trunk/toolkits/basemap/examples/pnganim.py
===================================================================
--- trunk/toolkits/basemap/examples/pnganim.py 2007-11-30 12:58:57 UTC (rev
4518)
+++ trunk/toolkits/basemap/examples/pnganim.py 2007-11-30 14:36:43 UTC (rev
4519)
@@ -2,15 +2,13 @@
# as an animation using a tool like imagemagick animate, or
# converted to an animate gif (using imagemagick convert).
-# requires pydap module.
-try:
- from dap import client
-except:
- raise ImportError,"requires pyDAP module (version 2.1 or higher) from
http://pydap.org"
-import pylab as p
-from matplotlib.numerix import ma
+# reads data over http - needs an active internet connection.
+
+import numpy
+import pylab
+from numpy import ma
import datetime, sys, time, subprocess
-from matplotlib.toolkits.basemap import Basemap, shiftgrid
+from matplotlib.toolkits.basemap import Basemap, shiftgrid, NetCDFFile
hrsgregstart = 13865688 # hrs from 00010101 to 15821015 in Julian calendar.
# times in many datasets use mixed Gregorian/Julian calendar, datetime
@@ -55,19 +53,19 @@
print URLu
print URLv
try:
- data = client.open(URL)
- datau = client.open(URLu)
- datav = client.open(URLv)
+ data = NetCDFFile(URL)
+ datau = NetCDFFile(URLu)
+ datav = NetCDFFile(URLv)
except:
raise IOError, 'opendap server not providing the requested data'
# read lats,lons,times.
-print data.keys()
-print datau.keys()
-print datav.keys()
-latitudes = data['lat'][:]
-longitudes = data['lon'][:].tolist()
-times = data['time'][:]
+print data.variables.keys()
+print datau.variables.keys()
+print datav.variables.keys()
+latitudes = data.variables['lat'][:]
+longitudes = data.variables['lon'][:].tolist()
+times = data.variables['time'][:]
# put times in YYYYMMDDHH format.
dates=[]
for t in times:
@@ -83,49 +81,49 @@
if ntime1 >= ntime2:
raise ValueError,'date2 must be greater than date1'
# get sea level pressure and 10-m wind data.
-slpdata = data['presmsl']
-udata = datau['ugrdprs']
-vdata = datau['vgrdprs']
+slpdata = data.variables['presmsl']
+udata = datau.variables['ugrdprs']
+vdata = datau.variables['vgrdprs']
# mult slp by 0.01 to put in units of millibars.
-slpin = 0.01*p.squeeze(slpdata[ntime1:ntime2+1,:,:])
-uin = p.squeeze(udata[ntime1:ntime2+1,0,:,:])
-vin = p.squeeze(vdata[ntime1:ntime2+1,0,:,:])
+slpin = 0.01*slpdata[ntime1:ntime2+1,:,:]
+uin = udata[ntime1:ntime2+1,0,:,:]
+vin = vdata[ntime1:ntime2+1,0,:,:]
datelabels = dates[ntime1:ntime2+1]
# add cyclic points
-slp = p.zeros((slpin.shape[0],slpin.shape[1],slpin.shape[2]+1),p.Float64)
+slp =
numpy.zeros((slpin.shape[0],slpin.shape[1],slpin.shape[2]+1),numpy.float64)
slp[:,:,0:-1] = slpin; slp[:,:,-1] = slpin[:,:,0]
-u = p.zeros((uin.shape[0],uin.shape[1],uin.shape[2]+1),p.Float64)
+u = numpy.zeros((uin.shape[0],uin.shape[1],uin.shape[2]+1),numpy.float64)
u[:,:,0:-1] = uin; u[:,:,-1] = uin[:,:,0]
-v = p.zeros((vin.shape[0],vin.shape[1],vin.shape[2]+1),p.Float64)
+v = numpy.zeros((vin.shape[0],vin.shape[1],vin.shape[2]+1),numpy.float64)
v[:,:,0:-1] = vin; v[:,:,-1] = vin[:,:,0]
-longitudes.append(360.); longitudes = p.array(longitudes)
+longitudes.append(360.); longitudes = numpy.array(longitudes)
# make 2-d grid of lons, lats
-lons, lats = p.meshgrid(longitudes,latitudes)
+lons, lats = numpy.meshgrid(longitudes,latitudes)
print 'min/max slp,u,v'
-print min(p.ravel(slp)),max(p.ravel(slp))
-print min(p.ravel(uin)),max(p.ravel(uin))
-print min(p.ravel(vin)),max(p.ravel(vin))
+print slp.min(), slp.max()
+print uin.min(), uin.max()
+print vin.min(), vin.max()
print 'dates'
print datelabels
-# make orthographic basemap.
+# make orthographic basemapylab.
m = Basemap(resolution='c',projection='ortho',lat_0=60.,lon_0=-60.)
-p.ion() # interactive mode on.
-uin = p.squeeze(udata[ntime1:ntime2+1,0,:,:])
-vin = p.squeeze(vdata[ntime1:ntime2+1,0,:,:])
+pylab.ion() # interactive mode on.
+uin = udata[ntime1:ntime2+1,0,:,:]
+vin = vdata[ntime1:ntime2+1,0,:,:]
datelabels = dates[ntime1:ntime2+1]
-# make orthographic basemap.
+# make orthographic basemapylab.
m = Basemap(resolution='c',projection='ortho',lat_0=60.,lon_0=-60.)
-p.ion() # interactive mode on.
+pylab.ion() # interactive mode on.
# create figure, add axes (leaving room for colorbar on right)
-fig = p.figure()
+fig = pylab.figure()
ax = fig.add_axes([0.1,0.1,0.7,0.7])
# set desired contour levels.
-clevs = p.arange(960,1061,5)
+clevs = numpy.arange(960,1061,5)
# compute native x,y coordinates of grid.
x, y = m(lons, lats)
# define parallels and meridians to draw.
-parallels = p.arange(-80.,90,20.)
-meridians = p.arange(0.,360.,20.)
+parallels = numpy.arange(-80.,90,20.)
+meridians = numpy.arange(0.,360.,20.)
# number of repeated frames at beginning and end is n1.
nframe = 0; n1 = 10
l,b,w,h=ax.get_position()
@@ -133,42 +131,42 @@
# parallels, meridians and title.
for nt,date in enumerate(datelabels[1:]):
CS =
m.contour(x,y,slp[nt,:,:],clevs,linewidths=0.5,colors='k',animated=True)
- CS = m.contourf(x,y,slp[nt,:,:],clevs,cmap=p.cm.RdBu_r,animated=True)
+ CS = m.contourf(x,y,slp[nt,:,:],clevs,cmap=pylab.cm.RdBu_r,animated=True)
# plot wind vectors on lat/lon grid.
# rotate wind vectors to map projection coordinates.
#urot,vrot = m.rotate_vector(u[nt,:,:],v[nt,:,:],lons,lats)
- # plot wind vectors over map.
+ # plot wind vectors over mapylab.
#Q = m.quiver(x,y,urot,vrot,scale=500)
# plot wind vectors on projection grid (looks better).
# first, shift grid so it goes from -180 to 180 (instead of 0 to 360
- # in longitude). Otherwise, interpolation is messed up.
+ # in longitude). Otherwise, interpolation is messed upylab.
ugrid,newlons = shiftgrid(180.,u[nt,:,:],longitudes,start=False)
vgrid,newlons = shiftgrid(180.,v[nt,:,:],longitudes,start=False)
# transform vectors to projection grid.
urot,vrot,xx,yy =
m.transform_vector(ugrid,vgrid,newlons,latitudes,51,51,returnxy=True,masked=True)
- # plot wind vectors over map.
+ # plot wind vectors over mapylab.
Q = m.quiver(xx,yy,urot,vrot,scale=500)
# make quiver key.
- qk = p.quiverkey(Q, 0.1, 0.1, 20, '20 m/s', labelpos='W')
+ qk = pylab.quiverkey(Q, 0.1, 0.1, 20, '20 m/s', labelpos='W')
# draw coastlines, parallels, meridians, title.
m.drawcoastlines(linewidth=1.5)
m.drawparallels(parallels)
m.drawmeridians(meridians)
- p.title('SLP and Wind Vectors '+date)
+ pylab.title('SLP and Wind Vectors '+date)
if nt == 0: # plot colorbar on a separate axes (only for first frame)
- cax = p.axes([l+w-0.05, b, 0.03, h]) # setup colorbar axes
+ cax = pylab.axes([l+w-0.05, b, 0.03, h]) # setup colorbar axes
fig.colorbar(CS,drawedges=True, cax=cax) # draw colorbar
cax.text(0.0,-0.05,'mb')
- p.axes(ax) # reset current axes
- p.draw() # draw the plot
+ pylab.axes(ax) # reset current axes
+ pylab.draw() # draw the plot
# save first and last frame n1 times
# (so gif animation pauses at beginning and end)
if nframe == 0 or nt == slp.shape[0]-1:
for n in range(n1):
- p.savefig('anim%03i'%nframe+'.png')
+ pylab.savefig('anim%03i'%nframe+'.png')
nframe = nframe + 1
else:
- p.savefig('anim%03i'%nframe+'.png')
+ pylab.savefig('anim%03i'%nframe+'.png')
nframe = nframe + 1
ax.clear() # clear the axes for the next plot.
Modified: trunk/toolkits/basemap/examples/warpimage.py
===================================================================
--- trunk/toolkits/basemap/examples/warpimage.py 2007-11-30 12:58:57 UTC
(rev 4518)
+++ trunk/toolkits/basemap/examples/warpimage.py 2007-11-30 14:36:43 UTC
(rev 4519)
@@ -1,6 +1,7 @@
import pylab as P
+import numpy
from matplotlib.toolkits.basemap import Basemap
-from matplotlib.numerix import ma
+from numpy import ma
from matplotlib.image import pil_to_array
from PIL import Image
@@ -10,13 +11,13 @@
# read in jpeg image to rgba array of normalized floats.
pilImage = Image.open('land_shallow_topo_2048.jpg')
rgba = pil_to_array(pilImage)
-rgba = rgba.astype(P.Float32)/255. # convert to normalized floats.
+rgba = rgba.astype(numpy.float32)/255. # convert to normalized floats.
# define lat/lon grid that image spans (projection='cyl').
nlons = rgba.shape[1]; nlats = rgba.shape[0]
delta = 360./float(nlons)
-lons = P.arange(-180.+0.5*delta,180.,delta)
-lats = P.arange(-90.+0.5*delta,90.,delta)
+lons = numpy.arange(-180.+0.5*delta,180.,delta)
+lats = numpy.arange(-90.+0.5*delta,90.,delta)
# create new figure
fig=P.figure()
@@ -27,8 +28,8 @@
# draw coastlines.
m.drawcoastlines(linewidth=0.5,color='0.5')
# draw lat/lon grid lines.
-m.drawmeridians(P.arange(-180,180,60),labels=[0,0,0,1],color='0.5')
-m.drawparallels(P.arange(-90,90,30),labels=[1,0,0,0],color='0.5')
+m.drawmeridians(numpy.arange(-180,180,60),labels=[0,0,0,1],color='0.5')
+m.drawparallels(numpy.arange(-90,90,30),labels=[1,0,0,0],color='0.5')
P.title("Blue Marble image - native 'cyl' projection",fontsize=12)
print 'plot cylindrical map (no warping needed) ...'
@@ -38,9 +39,9 @@
m = Basemap(projection='ortho',lat_0=40,lon_0=40,resolution='l')
# transform to nx x ny regularly spaced native projection grid
# nx and ny chosen to have roughly the same horizontal res as original image.
-dx = 2.*P.pi*m.rmajor/float(nlons)
+dx = 2.*numpy.pi*m.rmajor/float(nlons)
nx = int((m.xmax-m.xmin)/dx)+1; ny = int((m.ymax-m.ymin)/dx)+1
-rgba_warped = ma.zeros((ny,nx,4),P.Float64)
+rgba_warped = ma.zeros((ny,nx,4),numpy.float64)
# interpolate rgba values from proj='cyl' (geographic coords) to 'lcc'
# values outside of projection limb will be masked.
for k in range(4):
@@ -52,8 +53,8 @@
# draw coastlines.
m.drawcoastlines(linewidth=0.5,color='0.5')
# draw lat/lon grid lines every 30 degrees.
-m.drawmeridians(P.arange(0,360,30),color='0.5')
-m.drawparallels(P.arange(-90,90,30),color='0.5')
+m.drawmeridians(numpy.arange(0,360,30),color='0.5')
+m.drawparallels(numpy.arange(-90,90,30),color='0.5')
P.title("Blue Marble image warped from 'cyl' to 'ortho'
projection",fontsize=12)
print 'warp to orthographic map ...'
@@ -67,7 +68,7 @@
# nx and ny chosen to have roughly the same horizontal res as original image.
dx = 2.*P.pi*m.rmajor/float(nlons)
nx = int((m.xmax-m.xmin)/dx)+1; ny = int((m.ymax-m.ymin)/dx)+1
-rgba_warped = P.zeros((ny,nx,4),P.Float64)
+rgba_warped = numpy.zeros((ny,nx,4),numpy.float64)
# interpolate rgba values from proj='cyl' (geographic coords) to 'lcc'
for k in range(4):
rgba_warped[:,:,k] = m.transform_scalar(rgba[:,:,k],lons,lats,nx,ny)
@@ -77,9 +78,9 @@
m.drawcoastlines(linewidth=0.5,color='0.5')
# draw parallels and meridians.
# label on left, right and bottom of map.
-parallels = P.arange(0.,80,20.)
+parallels = numpy.arange(0.,80,20.)
m.drawparallels(parallels,labels=[1,1,0,1],color='0.5')
-meridians = P.arange(10.,360.,30.)
+meridians = numpy.arange(10.,360.,30.)
m.drawmeridians(meridians,labels=[1,1,0,1],color='0.5')
P.title("Blue Marble image warped from 'cyl' to 'lcc' projection",fontsize=12)
print 'warp to lambert conformal map ...'
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
-------------------------------------------------------------------------
SF.Net email is sponsored by: The Future of Linux Business White Paper
from Novell. From the desktop to the data center, Linux is going
mainstream. Let it simplify your IT future.
http://altfarm.mediaplex.com/ad/ck/8857-50307-18918-4
_______________________________________________
Matplotlib-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-checkins