Revision: 7240
          http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7240&view=rev
Author:   leejjoon
Date:     2009-06-25 04:57:48 +0000 (Thu, 25 Jun 2009)

Log Message:
-----------
legend supports CircleCollection.

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

Modified: trunk/matplotlib/lib/matplotlib/collections.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/collections.py      2009-06-24 21:01:53 UTC 
(rev 7239)
+++ trunk/matplotlib/lib/matplotlib/collections.py      2009-06-25 04:57:48 UTC 
(rev 7240)
@@ -995,6 +995,10 @@
         self._paths = [mpath.Path.unit_circle()]
     __init__.__doc__ = cbook.dedent(__init__.__doc__) % artist.kwdocd
 
+    def get_sizes(self):
+        "return sizes of circles"
+        return self._sizes
+
     def draw(self, renderer):
         # sizes is the area of the circle circumscribing the polygon
         # in points^2

Modified: trunk/matplotlib/lib/matplotlib/legend.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/legend.py   2009-06-24 21:01:53 UTC (rev 
7239)
+++ trunk/matplotlib/lib/matplotlib/legend.py   2009-06-25 04:57:48 UTC (rev 
7240)
@@ -31,7 +31,8 @@
 from matplotlib.font_manager import FontProperties
 from matplotlib.lines import Line2D
 from matplotlib.patches import Patch, Rectangle, Shadow, FancyBboxPatch
-from matplotlib.collections import LineCollection, RegularPolyCollection
+from matplotlib.collections import LineCollection, RegularPolyCollection, \
+     CircleCollection
 from matplotlib.transforms import Bbox, BboxBase, TransformedBbox, 
BboxTransformTo
 
 from matplotlib.offsetbox import HPacker, VPacker, TextArea, DrawingArea
@@ -439,7 +440,8 @@
         # manually set their transform to the self.get_transform().
 
         for handle in handles:
-            if isinstance(handle, RegularPolyCollection):
+            if isinstance(handle, RegularPolyCollection) or \
+                   isinstance(handle, CircleCollection):
                 npoints = self.scatterpoints
             else:
                 npoints = self.numpoints
@@ -531,6 +533,31 @@
                 p.set_clip_path(None)
                 handle_list.append(p)
 
+            elif isinstance(handle, CircleCollection):
+
+                ydata = height*self._scatteryoffsets
+
+                size_max, size_min = max(handle.get_sizes()),\
+                                     min(handle.get_sizes())
+                # we may need to scale these sizes by "markerscale"
+                # attribute. But other handle types does not seem
+                # to care about this attribute and it is currently ignored.
+                if self.scatterpoints < 4:
+                    sizes = [.5*(size_max+size_min), size_max,
+                             size_min]
+                else:
+                    sizes = 
(size_max-size_min)*np.linspace(0,1,self.scatterpoints)+size_min
+
+                p = type(handle)(sizes,
+                                 offsets=zip(xdata_marker,ydata),
+                                 transOffset=self.get_transform(),
+                                 )
+
+                p.update_from(handle)
+                p.set_figure(self.figure)
+                p.set_clip_box(None)
+                p.set_clip_path(None)
+                handle_list.append(p)
             else:
                 handle_list.append(None)
 


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

------------------------------------------------------------------------------
_______________________________________________
Matplotlib-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-checkins

Reply via email to