From: <js...@us...> - 2009-01-26 20:27:22
|
Revision: 6834 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=6834&view=rev Author: jswhit Date: 2009-01-26 20:27:17 +0000 (Mon, 26 Jan 2009) Log Message: ----------- specify calendar Modified Paths: -------------- trunk/toolkits/basemap/examples/plotsst.py trunk/toolkits/basemap/examples/pnganim.py Modified: trunk/toolkits/basemap/examples/plotsst.py =================================================================== --- trunk/toolkits/basemap/examples/plotsst.py 2009-01-26 20:01:58 UTC (rev 6833) +++ trunk/toolkits/basemap/examples/plotsst.py 2009-01-26 20:27:17 UTC (rev 6834) @@ -15,8 +15,8 @@ dataset = NetCDFFile('http://nomads.ncdc.noaa.gov/thredds/dodsC/oisst/totalAagg') # find index of desired time. time = dataset.variables['time'] -nt = date2index(date, time) -print num2date(time[nt],time.units) +nt = date2index(date, time, calendar='standard') +print num2date(time[nt],time.units, calendar='standard') # read sst. Will automatically create a masked array using # missing_value variable attribute. sst = dataset.variables['sst'][nt] Modified: trunk/toolkits/basemap/examples/pnganim.py =================================================================== --- trunk/toolkits/basemap/examples/pnganim.py 2009-01-26 20:01:58 UTC (rev 6833) +++ trunk/toolkits/basemap/examples/pnganim.py 2009-01-26 20:27:17 UTC (rev 6834) @@ -9,15 +9,13 @@ import matplotlib.mlab as mlab import numpy.ma as ma import datetime, sys, time, subprocess -from mpl_toolkits.basemap import Basemap, shiftgrid, NetCDFFile, num2date +from mpl_toolkits.basemap import Basemap, shiftgrid, NetCDFFile, date2index, num2date # times for March 1993 'storm of the century' -YYYYMMDDHH1 = '1993031000' -YYYYMMDDHH2 = '1993031700' +date1 = datetime.datetime(1993,3,10,0) +date2 = datetime.datetime(1993,3,17,0) +print date1, date2 -YYYY = YYYYMMDDHH1[0:4] -if YYYY != YYYYMMDDHH2[0:4]: - raise ValueError,'dates must be in same year' # set OpenDAP server URL. URL="http://nomad1.ncep.noaa.gov:9090/dods/reanalyses/reanalysis-2/6hr/pgb/pgb" @@ -32,18 +30,10 @@ latitudes = data.variables['lat'][:] longitudes = data.variables['lon'][:].tolist() times = data.variables['time'] -# convert numeric time values to datetime objects. -fdates = num2date(times[:],units=times.units,calendar='standard') -# put times in YYYYMMDDHH format. -dates = [fdate.strftime('%Y%m%d%H') for fdate in fdates] -if YYYYMMDDHH1 not in dates or YYYYMMDDHH2 not in dates: - raise ValueError, 'date1 or date2 not a valid date (must be in form YYYYMMDDHH, where HH is 00,06,12 or 18)' -# find indices bounding desired times. -ntime1 = dates.index(YYYYMMDDHH1) -ntime2 = dates.index(YYYYMMDDHH2) +ntime1 = date2index(date1,times,calendar='standard') +ntime2 = date2index(date2,times,calendar='standard') print 'ntime1,ntime2:',ntime1,ntime2 -if ntime1 >= ntime2: - raise ValueError,'date2 must be greater than date1' +print num2date(times[ntime1],times.units,calendar='standard'), num2date(times[ntime2],times.units,calendar='standard') # get sea level pressure and 10-m wind data. slpdata = data.variables['presmsl'] udata = data.variables['ugrdprs'] @@ -52,7 +42,7 @@ slpin = 0.01*slpdata[ntime1:ntime2+1,:,:] uin = udata[ntime1:ntime2+1,0,:,:] vin = vdata[ntime1:ntime2+1,0,:,:] -datelabels = dates[ntime1:ntime2+1] +dates = num2date(times[ntime1:ntime2+1], times.units, calendar='standard') # add cyclic points slp = np.zeros((slpin.shape[0],slpin.shape[1],slpin.shape[2]+1),np.float64) slp[:,:,0:-1] = slpin; slp[:,:,-1] = slpin[:,:,0] @@ -68,13 +58,12 @@ print uin.min(), uin.max() print vin.min(), vin.max() print 'dates' -print datelabels +print dates # make orthographic basemaplt. m = Basemap(resolution='c',projection='ortho',lat_0=60.,lon_0=-60.) plt.ion() # interactive mode on. uin = udata[ntime1:ntime2+1,0,:,:] vin = vdata[ntime1:ntime2+1,0,:,:] -datelabels = dates[ntime1:ntime2+1] # make orthographic basemaplt. m = Basemap(resolution='c',projection='ortho',lat_0=60.,lon_0=-60.) plt.ion() # interactive mode on. @@ -94,7 +83,7 @@ l, b, w, h = pos.bounds # loop over times, make contour plots, draw coastlines, # parallels, meridians and title. -for nt,date in enumerate(datelabels[1:]): +for nt,date in enumerate(dates): CS = m.contour(x,y,slp[nt,:,:],clevs,linewidths=0.5,colors='k',animated=True) CS = m.contourf(x,y,slp[nt,:,:],clevs,cmap=plt.cm.RdBu_r,animated=True) # plot wind vectors on lat/lon grid. @@ -117,7 +106,7 @@ m.drawcoastlines(linewidth=1.5) m.drawparallels(parallels) m.drawmeridians(meridians) - plt.title('SLP and Wind Vectors '+date) + plt.title('SLP and Wind Vectors '+str(date)) if nt == 0: # plot colorbar on a separate axes (only for first frame) cax = plt.axes([l+w-0.05, b, 0.03, h]) # setup colorbar axes fig.colorbar(CS,drawedges=True, cax=cax) # draw colorbar This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |