From: <md...@us...> - 2008-12-02 20:08:57
|
Revision: 6476 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=6476&view=rev Author: mdboom Date: 2008-12-02 20:08:53 +0000 (Tue, 02 Dec 2008) Log Message: ----------- Replace axes when current one is of the wrong projection type. This lets "subplot(111); polar()" work. Modified Paths: -------------- trunk/matplotlib/lib/matplotlib/figure.py Modified: trunk/matplotlib/lib/matplotlib/figure.py =================================================================== --- trunk/matplotlib/lib/matplotlib/figure.py 2008-12-02 19:51:10 UTC (rev 6475) +++ trunk/matplotlib/lib/matplotlib/figure.py 2008-12-02 20:08:53 UTC (rev 6476) @@ -656,13 +656,8 @@ %(Axes)s """ - key = self._make_key(*args, **kwargs) - if key in self._seen: - ax = self._seen[key] - self.sca(ax) - return ax + kwargs = kwargs.copy() - if not len(args): return if isinstance(args[0], SubplotBase): @@ -680,8 +675,18 @@ projection = 'polar' projection_class = get_projection_class(projection) - a = subplot_class_factory(projection_class)(self, *args, **kwargs) + key = self._make_key(*args, **kwargs) + if key in self._seen: + ax = self._seen[key] + if isinstance(ax, projection_class): + self.sca(ax) + return ax + else: + self.axes.remove(ax) + self._axstack.remove(ax) + + a = subplot_class_factory(projection_class)(self, *args, **kwargs) self.axes.append(a) self._axstack.push(a) self.sca(a) @@ -891,7 +896,20 @@ %(Axes)s """ ax = self._axstack() - if ax is not None: return ax + if ax is not None: + ispolar = kwargs.get('polar', False) + projection = kwargs.get('projection', None) + if ispolar: + if projection is not None and projection != 'polar': + raise ValueError( + "polar=True, yet projection='%s'. " + + "Only one of these arguments should be supplied." % + projection) + projection = 'polar' + + projection_class = get_projection_class(projection) + if isinstance(ax, projection_class): + return ax return self.add_subplot(111, **kwargs) gca.__doc__ = dedent(gca.__doc__) % artist.kwdocd This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |