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