|
From: <ef...@us...> - 2010-09-09 00:35:18
|
Revision: 8693
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8693&view=rev
Author: efiring
Date: 2010-09-09 00:35:12 +0000 (Thu, 09 Sep 2010)
Log Message:
-----------
figure.py: preserve the order in which Axes were added to the figure
Modified Paths:
--------------
trunk/matplotlib/lib/matplotlib/figure.py
Modified: trunk/matplotlib/lib/matplotlib/figure.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/figure.py 2010-09-08 15:53:27 UTC (rev 8692)
+++ trunk/matplotlib/lib/matplotlib/figure.py 2010-09-09 00:35:12 UTC (rev 8693)
@@ -41,25 +41,35 @@
"""
Specialization of the Stack to handle all
tracking of Axes in a Figure. This requires storing
- key, axes pairs. The key is based on the args and kwargs
- used in generating the Axes.
+ key, (ind, axes) pairs. The key is based on the args and kwargs
+ used in generating the Axes. ind is a serial number for tracking
+ the order in which axes were added.
"""
+ def __init__(self):
+ Stack.__init__(self)
+ self._ind = 0
+
def as_list(self):
"""
Return a list of the Axes instances that have been added to the figure
"""
- return [a for k, a in self._elements]
+ ia_list = [a for k, a in self._elements]
+ ia_list.sort()
+ return [a for i, a in ia_list]
def get(self, key):
"""
Return the Axes instance that was added with *key*.
If it is not present, return None.
"""
- return dict(self._elements).get(key)
+ item = dict(self._elements).get(key)
+ if item is None:
+ return None
+ return item[1]
def _entry_from_axes(self, e):
- k = dict([(a, k) for (k, a) in self._elements])[e]
- return k, e
+ ind, k = dict([(a, (ind, k)) for (k, (ind, a)) in self._elements])[e]
+ return (k, (ind, e))
def remove(self, a):
Stack.remove(self, self._entry_from_axes(a))
@@ -92,13 +102,14 @@
if a in self:
return None
- return Stack.push(self, (key, a))
+ self._ind += 1
+ return Stack.push(self, (key, (self._ind, a)))
def __call__(self):
if not len(self._elements):
return self._default
else:
- return self._elements[self._pos][1]
+ return self._elements[self._pos][1][1]
def __contains__(self, a):
return a in self.as_list()
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|