From: <js...@us...> - 2009-06-24 18:11:33
|
Revision: 7236 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7236&view=rev Author: jswhit Date: 2009-06-24 18:11:30 +0000 (Wed, 24 Jun 2009) Log Message: ----------- put ax checking code in a separate private method Modified Paths: -------------- trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py Modified: trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py =================================================================== --- trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py 2009-06-24 05:51:52 UTC (rev 7235) +++ trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py 2009-06-24 18:11:30 UTC (rev 7236) @@ -1203,14 +1203,7 @@ returns matplotlib.collections.PatchCollection representing map boundary. """ # get current axes instance (if none specified). - if ax is None and self.ax is None: - try: - ax = plt.gca() - except: - import matplotlib.pyplot as plt - ax = plt.gca() - elif ax is None and self.ax is not None: - ax = self.ax + ax = ax or self._check_ax() limb = None if self.projection in ['ortho','geos'] or (self.projection=='aeqd' and\ self._fulldisk): @@ -1344,14 +1337,7 @@ if self.resolution is None: raise AttributeError, 'there are no boundary datasets associated with this Basemap instance' # get current axes instance (if none specified). - if ax is None and self.ax is None: - try: - ax = plt.gca() - except: - import matplotlib.pyplot as plt - ax = plt.gca() - elif ax is None and self.ax is not None: - ax = self.ax + ax = ax or self._check_ax() # get axis background color. axisbgc = ax.get_axis_bgcolor() npoly = 0 @@ -1414,14 +1400,7 @@ if self.resolution is None: raise AttributeError, 'there are no boundary datasets associated with this Basemap instance' # get current axes instance (if none specified). - if ax is None and self.ax is None: - try: - ax = plt.gca() - except: - import matplotlib.pyplot as plt - ax = plt.gca() - elif ax is None and self.ax is not None: - ax = self.ax + ax = ax or self._check_ax() coastlines = LineCollection(self.coastsegs,antialiaseds=(antialiased,)) coastlines.set_color(color) coastlines.set_linewidth(linewidth) @@ -1461,14 +1440,7 @@ if not hasattr(self,'cntrysegs'): self.cntrysegs, types = self._readboundarydata('countries') # get current axes instance (if none specified). - if ax is None and self.ax is None: - try: - ax = plt.gca() - except: - import matplotlib.pyplot as plt - ax = plt.gca() - elif ax is None and self.ax is not None: - ax = self.ax + ax = ax or self._check_ax() countries = LineCollection(self.cntrysegs,antialiaseds=(antialiased,)) countries.set_color(color) countries.set_linewidth(linewidth) @@ -1508,14 +1480,7 @@ if not hasattr(self,'statesegs'): self.statesegs, types = self._readboundarydata('states') # get current axes instance (if none specified). - if ax is None and self.ax is None: - try: - ax = plt.gca() - except: - import matplotlib.pyplot as plt - ax = plt.gca() - elif ax is None and self.ax is not None: - ax = self.ax + ax = ax or self._check_ax() states = LineCollection(self.statesegs,antialiaseds=(antialiased,)) states.set_color(color) states.set_linewidth(linewidth) @@ -1555,14 +1520,7 @@ if not hasattr(self,'riversegs'): self.riversegs, types = self._readboundarydata('rivers') # get current axes instance (if none specified). - if ax is None and self.ax is None: - try: - ax = plt.gca() - except: - import matplotlib.pyplot as plt - ax = plt.gca() - elif ax is None and self.ax is not None: - ax = self.ax + ax = ax or self._check_ax() rivers = LineCollection(self.riversegs,antialiaseds=(antialiased,)) rivers.set_color(color) rivers.set_linewidth(linewidth) @@ -1703,14 +1661,7 @@ # draw shape boundaries using LineCollection. if drawbounds: # get current axes instance (if none specified). - if ax is None and self.ax is None: - try: - ax = plt.gca() - except: - import matplotlib.pyplot as plt - ax = plt.gca() - elif ax is None and self.ax is not None: - ax = self.ax + ax = ax or self._check_ax() # make LineCollections for each polygon. lines = LineCollection(shpsegs,antialiaseds=(1,)) lines.set_color(color) @@ -1783,14 +1734,7 @@ associated with each parallel. """ # get current axes instance (if none specified). - if ax is None and self.ax is None: - try: - ax = plt.gca() - except: - import matplotlib.pyplot as plt - ax = plt.gca() - elif ax is None and self.ax is not None: - ax = self.ax + ax = ax or self._check_ax() # don't draw meridians past latmax, always draw parallel at latmax. if latmax is None: latmax = 80. # offset for labels. @@ -2043,14 +1987,7 @@ associated with each meridian. """ # get current axes instance (if none specified). - if ax is None and self.ax is None: - try: - ax = plt.gca() - except: - import matplotlib.pyplot as plt - ax = plt.gca() - elif ax is None and self.ax is not None: - ax = self.ax + ax = ax or self._check_ax() # don't draw meridians past latmax, always draw parallel at latmax. if latmax is None: latmax = 80. # unused w/ cyl, merc or miller proj. # offset for labels. @@ -2255,16 +2192,7 @@ Other \**kwargs passed on to matplotlib.patches.Polygon. returns a matplotlib.patches.Polygon object.""" - 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') + ax = kwargs.pop('ax', None) or self._check_ax() g = pyproj.Geod(a=self.rmajor,b=self.rminor) az12,az21,dist = g.inv(lon_0,lat_0,lon_0,lat_0+radius_deg) seg = [self(lon_0,lat_0+radius_deg)] @@ -2577,14 +2505,7 @@ or specified axes instance. """ # get current axes instance (if none specified). - if ax is None and self.ax is None: - try: - ax = plt.gca() - except: - import matplotlib.pyplot as plt - ax = plt.gca() - elif ax is None and self.ax is not None: - ax = self.ax + ax = ax or self._check_ax() # update data limits for map domain. corners = ((self.llcrnrx,self.llcrnry), (self.urcrnrx,self.urcrnry)) ax.update_datalim( corners ) @@ -2621,16 +2542,7 @@ Other \**kwargs passed on to matplotlib.pyplot.scatter. """ - 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') + ax = kwargs.pop('ax', None) or self._check_ax() # allow callers to override the hold state by passing hold=True|False b = ax.ishold() h = kwargs.pop('hold',None) @@ -2664,16 +2576,7 @@ Other \**kwargs passed on to matplotlib.pyplot.plot. """ - 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') + ax = kwargs.pop('ax', None) or self._check_ax() # allow callers to override the hold state by passing hold=True|False b = ax.ishold() h = kwargs.pop('hold',None) @@ -2707,16 +2610,7 @@ returns an matplotlib.image.AxesImage instance. """ - 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') + ax = kwargs.pop('ax', None) or self._check_ax() kwargs['extent']=(self.llcrnrx,self.urcrnrx,self.llcrnry,self.urcrnry) # use origin='lower', unless overridden. if not kwargs.has_key('origin'): @@ -2758,16 +2652,7 @@ Other \**kwargs passed on to matplotlib.pyplot.pcolor. """ - 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') + ax = kwargs.pop('ax', None) or self._check_ax() # make x,y masked arrays # (masked where data is outside of projection limb) x = ma.masked_values(np.where(x > 1.e20,1.e20,x), 1.e20) @@ -2805,16 +2690,7 @@ Other \**kwargs passed on to matplotlib.pyplot.pcolormesh. """ - 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') + ax = kwargs.pop('ax', None) or self._check_ax() # allow callers to override the hold state by passing hold=True|False b = ax.ishold() h = kwargs.pop('hold',None) @@ -2848,16 +2724,7 @@ Other \*args and \**kwargs passed on to matplotlib.pyplot.contour. """ - 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') + ax = kwargs.pop('ax', None) or self._check_ax() # make sure x is monotonically increasing - if not, # print warning suggesting that the data be shifted in longitude # with the shiftgrid function. @@ -2921,16 +2788,7 @@ Other \*args and \**kwargs passed on to matplotlib.pyplot.scatter. """ - 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') + ax = kwargs.pop('ax', None) or self._check_ax() # make sure x is monotonically increasing - if not, # print warning suggesting that the data be shifted in longitude # with the shiftgrid function. @@ -2991,16 +2849,7 @@ Other \*args and \**kwargs passed on to matplotlib.pyplot.quiver. """ - 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') + ax = kwargs.pop('ax', None) or self._check_ax() # allow callers to override the hold state by passing hold=True|False b = ax.ishold() h = kwargs.pop('hold',None) @@ -3037,16 +2886,7 @@ barb method requires matplotlib 0.98.3 or higher, you have %s""" % _matplotlib_version) raise NotImplementedError(msg) - 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') + ax = kwargs.pop('ax', None) or self._check_ax() # allow callers to override the hold state by passing hold=True|False b = ax.ishold() h = kwargs.pop('hold',None) @@ -3136,16 +2976,7 @@ rgba_ocean = ocean_color # look for axes instance (as keyword, an instance variable # or from plt.gca(). - 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') + ax = kwargs.pop('ax', None) or self._check_ax() # if lsmask,lsmask_lons,lsmask_lats keywords not given, # read default land-sea mask in from file. if lsmask is None or lsmask_lons is None or lsmask_lats is None: @@ -3267,16 +3098,7 @@ except ImportError: raise ImportError('warpimage method requires PIL (http://www.pythonware.com/products/pil)') from matplotlib.image import pil_to_array - 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') + ax = kwargs.pop('ax', None) or self._check_ax() # default image file is blue marble next generation # from NASA (http://visibleearth.nasa.gov). if image == "bluemarble": @@ -3436,14 +3258,7 @@ Extra keyword ``ax`` can be used to override the default axis instance. """ # get current axes instance (if none specified). - if ax is None and self.ax is None: - try: - ax = plt.gca() - except: - import matplotlib.pyplot as plt - ax = plt.gca() - elif ax is None and self.ax is not None: - ax = self.ax + ax = ax or self._check_ax() # not valid for cylindrical projection if self.projection == 'cyl': raise ValueError("cannot draw map scale for projection='cyl'") @@ -3578,6 +3393,27 @@ raise KeyError("barstyle must be 'simple' or 'fancy'") return rets + def _check_ax(self, ax=None): + """ + Returns the axis on which to draw. + By default, returns self.ax. If None, set it to plt.gca() + """ + # + if ax is None: + if self.ax is None: + try: + ax = plt.gca() + except: + import matplotlib.pyplot as plt + ax = plt.gca() + else: + ax = self.ax + # associate an axes instance with this Basemap instance + # the first time this method is called. + # self.ax = ax + #return self.ax + return ax + ### End of Basemap class def _searchlist(a,x): This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |