|
From: <js...@us...> - 2008-07-23 12:32:50
|
Revision: 5820
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=5820&view=rev
Author: jswhit
Date: 2008-07-23 12:32:48 +0000 (Wed, 23 Jul 2008)
Log Message:
-----------
add barbs method, barbs example.
Modified Paths:
--------------
trunk/toolkits/basemap/MANIFEST.in
trunk/toolkits/basemap/examples/README
trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py
Added Paths:
-----------
trunk/toolkits/basemap/examples/barb_demo.py
Modified: trunk/toolkits/basemap/MANIFEST.in
===================================================================
--- trunk/toolkits/basemap/MANIFEST.in 2008-07-23 03:08:41 UTC (rev 5819)
+++ trunk/toolkits/basemap/MANIFEST.in 2008-07-23 12:32:48 UTC (rev 5820)
@@ -39,6 +39,7 @@
include examples/contour_demo.py
include examples/customticks.py
include examples/quiver_demo.py
+include examples/barbs_demo.py
include examples/nytolondon.py
include examples/ortho_demo.py
include examples/geos_demo.py
Modified: trunk/toolkits/basemap/examples/README
===================================================================
--- trunk/toolkits/basemap/examples/README 2008-07-23 03:08:41 UTC (rev 5819)
+++ trunk/toolkits/basemap/examples/README 2008-07-23 12:32:48 UTC (rev 5820)
@@ -36,6 +36,8 @@
quiver_demo.py shows how to plot wind vectors on a map.
+barbs_demo.py shows how to plot wind barbs on a map.
+
randompoints.py demonstrates the use of scatter to plot randomly distributed
points on the earth.
Added: trunk/toolkits/basemap/examples/barb_demo.py
===================================================================
--- trunk/toolkits/basemap/examples/barb_demo.py (rev 0)
+++ trunk/toolkits/basemap/examples/barb_demo.py 2008-07-23 12:32:48 UTC (rev 5820)
@@ -0,0 +1,55 @@
+from mpl_toolkits.basemap import Basemap
+import numpy as np
+import matplotlib.pyplot as plt
+
+# read in data.
+file = open('fcover.dat','r')
+ul=[];vl=[];pl=[]
+nlons=73; nlats=73
+dellat = 2.5; dellon = 5.
+for line in file.readlines():
+ l = line.replace('\n','').split()
+ ul.append(float(l[0]))
+ vl.append(float(l[1]))
+ pl.append(float(l[2]))
+u = np.reshape(np.array(ul,np.float32),(nlats,nlons))
+v = np.reshape(np.array(vl,np.float32),(nlats,nlons))
+p = np.reshape(np.array(pl,np.float32),(nlats,nlons))
+lats1 = -90.+dellat*np.arange(nlats)
+lons1 = -180.+dellon*np.arange(nlons)
+lons, lats = np.meshgrid(lons1, lats1)
+# convert from mps to knots.
+u = 1.944*u; v = 1.944*v
+
+# plot barbs in map projection coordinates.
+
+# stereogrpaphic projection.
+m = Basemap(width=10000000,height=10000000,lon_0=-90,lat_0=45.,lat_ts=45,
+ resolution='l',projection='stere')
+x,y = m(lons,lats)
+# transform from spherical to map projection coordinates (rotation
+# and interpolation).
+nxv = 25; nyv = 25
+udat, vdat, xv, yv = m.transform_vector(u,v,lons1,lats1,nxv,nyv,returnxy=True)
+# create a figure, add an axes.
+fig=plt.figure(figsize=(8,8))
+ax = fig.add_axes([0.1,0.1,0.7,0.7])
+# plot color-filled contours over map
+levs = np.arange(960,1051,4)
+cs1 = m.contour(x,y,p,levs,colors='k',linewidths=0.5)
+cs2 = m.contourf(x,y,p,levs)
+# plot barbs.
+m.barbs(xv,yv,udat,vdat,length=6,barbcolor='k',flagcolor='r',linewidth=0.5)
+# plot colorbar for pressure
+cax = plt.axes([0.875, 0.1, 0.05, 0.7]) # setup colorbar axes.
+plt.colorbar(cax=cax) # draw colorbar
+plt.axes(ax) # make the original axes current again
+# draw coastlines
+m.drawcoastlines()
+# draw parallels
+m.drawparallels(np.arange(0,81,20),labels=[1,1,0,0])
+# draw meridians
+m.drawmeridians(np.arange(-180,0,20),labels=[0,0,0,1])
+plt.title('Surface Wind Barbs and Pressure')
+plt.show()
+
Modified: trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py
===================================================================
--- trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py 2008-07-23 03:08:41 UTC (rev 5819)
+++ trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py 2008-07-23 12:32:48 UTC (rev 5820)
@@ -2890,6 +2890,44 @@
self.set_axes_limits(ax=ax)
return ret
+ def barbs(self, x, y, u, v, *args, **kwargs):
+ """
+ Make a wind barb plot (u, v) with on the map.
+ (see matplotlib.pyplot.barbs documentation).
+
+ Extra keyword ``ax`` can be used to override the default axis instance.
+
+ Other \*args and \**kwargs passed on to matplotlib.pyplot.barbs
+ """
+ if not kwargs.has_key('ax') and self.ax is None:
+ try:
+ ax = plt.gca()
+ except:
+ import matplotlib.pyplot as plt
+ ax = plt.gca()
+ elif not kwargs.has_key('ax') and self.ax is not None:
+ ax = self.ax
+ else:
+ ax = kwargs.pop('ax')
+ # allow callers to override the hold state by passing hold=True|False
+ b = ax.ishold()
+ h = kwargs.pop('hold',None)
+ if h is not None:
+ ax.hold(h)
+ try:
+ ret = ax.barbs(x,y,u,v,*args,**kwargs)
+ try:
+ plt.draw_if_interactive()
+ except:
+ pass
+ except:
+ ax.hold(b)
+ raise
+ ax.hold(b)
+ # set axes limits to fit map region.
+ self.set_axes_limits(ax=ax)
+ return ret
+
def drawlsmask(self,rgba_land,rgba_ocean,lsmask=None,
lsmask_lons=None,lsmask_lats=None,lakes=False,**kwargs):
"""
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|