Revision: 6479
          http://matplotlib.svn.sourceforge.net/matplotlib/?rev=6479&view=rev
Author:   leejjoon
Date:     2008-12-02 22:27:38 +0000 (Tue, 02 Dec 2008)

Log Message:
-----------
Fixed a bug in the new legend class that didn't allowed a tuple of coordinate 
vlaues as loc

Modified Paths:
--------------
    trunk/matplotlib/CHANGELOG
    trunk/matplotlib/lib/matplotlib/legend.py

Modified: trunk/matplotlib/CHANGELOG
===================================================================
--- trunk/matplotlib/CHANGELOG  2008-12-02 22:04:41 UTC (rev 6478)
+++ trunk/matplotlib/CHANGELOG  2008-12-02 22:27:38 UTC (rev 6479)
@@ -1,3 +1,6 @@
+2008-12-02 Fixed a bug in the new legend class that didn't allowed 
+           a tuple of coordinate vlaues as loc. -JJL
+
 2008-12-02 Improve checks for external dependencies, using subprocess 
            (instead of deprecated popen*) and distutils (for version
            checking) - DSD

Modified: trunk/matplotlib/lib/matplotlib/legend.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/legend.py   2008-12-02 22:04:41 UTC (rev 
6478)
+++ trunk/matplotlib/lib/matplotlib/legend.py   2008-12-02 22:27:38 UTC (rev 
6479)
@@ -61,6 +61,9 @@
       'upper center' : 9,
       'center'       : 10,
 
+    loc can be a tuple of the noramilzed coordinate values with
+    respect its parent.
+   
     Return value is a sequence of text, line instances that make
     up the legend
     """
@@ -100,7 +103,7 @@
                  axespad = None,       # deprecated; use borderaxespad
 
                  # spacing & pad defined as a fractionof the font-size 
-                 borderpad = None,     # the fractional whitespace inside the 
legend border
+                 borderpad = None,     # the whitespace inside the legend 
border
                  labelspacing=None, #the vertical space between the legend 
entries
                  handlelength=None, # the length of the legend handles
                  handletextpad=None, # the pad between the legend handle and 
text
@@ -119,11 +122,11 @@
 
         Optional keyword arguments:
 
-        ================   =========================================
+        ================   =================================================
         Keyword            Description
-        ================   =========================================
+        ================   =================================================
 
-        loc                a location code
+        loc                a location code or a tuple of coordinates
         numpoints          the number of points in the legend line
         prop               the font property
         markerscale        the relative size of legend markers vs. original
@@ -284,14 +287,22 @@
         a.set_transform(self.get_transform())
 
     def _findoffset_best(self, width, height, xdescent, ydescent):
-        "Heper function to locate the legend"
+        "Heper function to locate the legend at its best position"
         ox, oy = self._find_best_position(width, height)
         return ox+xdescent, oy+ydescent
 
     def _findoffset_loc(self, width, height, xdescent, ydescent):
-        "Heper function to locate the legend"
-        bbox = Bbox.from_bounds(0, 0, width, height)
-        x, y = self._get_anchored_bbox(self._loc, bbox, self.parent.bbox)
+        "Heper function to locate the legend using the location code"
+
+        if iterable(self._loc) and len(self._loc)==2:
+            # when loc is a tuple of axes(or figure) coordinates.
+            fx, fy = self._loc
+            bbox = self.parent.bbox
+            x, y = bbox.x0 + bbox.width * fx, bbox.y0 + bbox.height * fy
+        else:
+            bbox = Bbox.from_bounds(0, 0, width, height)
+            x, y = self._get_anchored_bbox(self._loc, bbox, self.parent.bbox)
+
         return x+xdescent, y+ydescent
 
     def draw(self, renderer):


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Matplotlib-checkins mailing list
Matplotlib-checkins@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-checkins

Reply via email to