|
From: <jd...@us...> - 2008-12-08 15:30:58
|
Revision: 6511
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=6511&view=rev
Author: jdh2358
Date: 2008-12-08 15:30:56 +0000 (Mon, 08 Dec 2008)
Log Message:
-----------
added rc param to control legend fancybox
Modified Paths:
--------------
trunk/matplotlib/examples/pylab_examples/legend_demo.py
trunk/matplotlib/examples/pylab_examples/legend_demo3.py
trunk/matplotlib/lib/matplotlib/legend.py
trunk/matplotlib/lib/matplotlib/rcsetup.py
trunk/matplotlib/matplotlibrc.template
Modified: trunk/matplotlib/examples/pylab_examples/legend_demo.py
===================================================================
--- trunk/matplotlib/examples/pylab_examples/legend_demo.py 2008-12-08 15:10:20 UTC (rev 6510)
+++ trunk/matplotlib/examples/pylab_examples/legend_demo.py 2008-12-08 15:30:56 UTC (rev 6511)
@@ -15,7 +15,7 @@
ax = plt.subplot(111)
plt.plot(a,c,'k--',a,d,'k:',a,c+d,'k')
plt.legend(('Model length', 'Data length', 'Total message length'),
- 'upper center', shadow=True)
+ 'upper center', shadow=True, fancybox=True)
plt.ylim([-1,20])
plt.grid(False)
plt.xlabel('Model complexity --->')
Modified: trunk/matplotlib/examples/pylab_examples/legend_demo3.py
===================================================================
--- trunk/matplotlib/examples/pylab_examples/legend_demo3.py 2008-12-08 15:10:20 UTC (rev 6510)
+++ trunk/matplotlib/examples/pylab_examples/legend_demo3.py 2008-12-08 15:30:56 UTC (rev 6511)
@@ -1,5 +1,6 @@
#!/usr/bin/env python
-
+import matplotlib
+matplotlib.rcParams['legend.fancybox'] = True
import matplotlib.pyplot as plt
import numpy as np
import pylab
@@ -22,7 +23,7 @@
ax3 = plt.subplot(3,1,3)
myplot(ax3)
-ax3.legend(loc=1, ncol=4, mode="expand", fancybox=False, shadow=True)
+ax3.legend(loc=1, ncol=4, mode="expand", shadow=True)
#title('Damped oscillation')
Modified: trunk/matplotlib/lib/matplotlib/legend.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/legend.py 2008-12-08 15:10:20 UTC (rev 6510)
+++ trunk/matplotlib/lib/matplotlib/legend.py 2008-12-08 15:30:56 UTC (rev 6511)
@@ -63,7 +63,7 @@
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
"""
@@ -94,15 +94,15 @@
scatterpoints = 3, # TODO: may be an rcParam
scatteryoffsets=None,
prop = None, # properties for the legend texts
-
+
# the following dimensions are in axes coords
pad = None, # deprecated; use borderpad
- labelsep = None, # deprecated; use labelspacing
- handlelen = None, # deprecated; use handlelength
- handletextsep = None, # deprecated; use handletextpad
+ labelsep = None, # deprecated; use labelspacing
+ handlelen = None, # deprecated; use handlelength
+ handletextsep = None, # deprecated; use handletextpad
axespad = None, # deprecated; use borderaxespad
- # spacing & pad defined as a fractionof the font-size
+ # spacing & pad defined as a fractionof the font-size
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
@@ -113,7 +113,7 @@
ncol=1, # number of columns
mode=None, # mode for horizontal distribution of columns. None, "expand"
- fancybox=True,
+ fancybox=None, # True use a fancy box, false use a rounded box, none use rc
shadow = None,
):
"""
@@ -131,7 +131,7 @@
numpoints the number of points in the legend line
prop the font property
markerscale the relative size of legend markers vs. original
- fancybox if True, draw a frame with a round fancybox.
+ fancybox if True, draw a frame with a round fancybox. If None, use rc
shadow if True, draw a shadow behind legend
scatteryoffsets a list of yoffsets for scatter symbols in legend
@@ -144,7 +144,7 @@
The dimensions of pad and spacing are given as a fraction of the
fontsize. Values from rcParams will be used if None.
-
+
"""
from matplotlib.axes import Axes # local import only to avoid circularity
from matplotlib.figure import Figure # local import only to avoid circularity
@@ -172,7 +172,7 @@
# Take care the deprecated keywords
deprecated_kwds = {"pad":"borderpad",
"labelsep":"labelspacing",
- "handlelen":"handlelength",
+ "handlelen":"handlelength",
"handletextsep":"handletextpad",
"axespad":"borderaxespad"}
@@ -182,7 +182,7 @@
# conversion factor
bbox = parent.bbox
axessize_fontsize = min(bbox.width, bbox.height)/self.fontsize
-
+
for k, v in deprecated_kwds.items():
# use deprecated value if not None and if their newer
# counter part is None.
@@ -199,7 +199,7 @@
setattr(self, v, localdict[v])
del localdict
-
+
self._ncol = ncol
if self.numpoints <= 0:
@@ -265,6 +265,9 @@
# The width and height of the legendPatch will be set (in the
# draw()) to the length that includes the padding. Thus we set
# pad=0 here.
+ if fancybox is None:
+ fancybox = rcParams["legend.fancybox"]
+
if fancybox == True:
self.legendPatch.set_boxstyle("round",pad=0,
rounding_size=0.2)
@@ -318,7 +321,7 @@
# find_offset function will be provided to _legend_box and
# _legend_box will draw itself at the location of the return
- # value of the find_offset.
+ # value of the find_offset.
if self._loc == 0:
self._legend_box.set_offset(self._findoffset_best)
else:
@@ -339,7 +342,7 @@
if self.shadow:
shadow = Shadow(self.legendPatch, 2, -2)
shadow.draw(renderer)
-
+
self.legendPatch.draw(renderer)
self._legend_box.draw(renderer)
@@ -360,7 +363,7 @@
Initiallize the legend_box. The legend_box is an instance of
the OffsetBox, which is packed with legend handles and
texts. Once packed, their location is calculated during the
- drawing time.
+ drawing time.
"""
# legend_box is a HPacker, horizontally packed with
@@ -371,7 +374,7 @@
# is an instance of offsetbox.TextArea which contains legend
# text.
-
+
text_list = [] # the list of text instances
handle_list = [] # the list of text instances
@@ -394,12 +397,12 @@
# The approximate height and descent of text. These values are
# only used for plotting the legend handle.
height = self._approx_text_height() * 0.7
- descent = 0.
+ descent = 0.
# each handle needs to be drawn inside a box of
# (x, y, w, h) = (0, -descent, width, height).
# And their corrdinates should be given in the display coordinates.
-
+
# The transformation of each handle will be automatically set
# to self.get_trasnform(). If the artist does not uses its
# default trasnform (eg, Collections), you need to
@@ -413,7 +416,7 @@
if npoints > 1:
# we put some pad here to compensate the size of the
# marker
- xdata = np.linspace(0.3*self.fontsize,
+ xdata = np.linspace(0.3*self.fontsize,
(self.handlelength-0.3)*self.fontsize,
npoints)
xdata_marker = xdata
@@ -484,14 +487,14 @@
size_min]
else:
sizes = (size_max-size_min)*np.linspace(0,1,self.scatterpoints)+size_min
-
+
p = type(handle)(handle.get_numsides(),
rotation=handle.get_rotation(),
sizes=sizes,
offsets=zip(xdata_marker,ydata),
transOffset=self.get_transform(),
)
-
+
p.update_from(handle)
p.set_figure(self.figure)
p.set_clip_box(None)
@@ -534,7 +537,7 @@
for h, t in handle_label[i0:i0+di]]
# minimumdescent=False for the text of the last row of the column
itemBoxes[-1].get_children()[1].set_minimumdescent(False)
-
+
# pack columnBox
columnbox.append(VPacker(pad=0,
sep=self.labelspacing*self.fontsize,
@@ -547,7 +550,7 @@
mode = "fixed"
sep = self.columnspacing*self.fontsize
-
+
self._legend_box = HPacker(pad=self.borderpad*self.fontsize,
sep=sep, align="baseline",
mode=mode,
@@ -555,8 +558,8 @@
self.texts = text_list
self.legendHandles = handle_list
-
+
def _auto_legend_data(self):
"""
Returns list of vertices and extents covered by the plot.
@@ -655,12 +658,12 @@
LC:"S",
UC:"N",
C:"C"}
-
+
c = anchor_coefs[loc]
container = parentbbox.padded(-(self.borderaxespad) * self.fontsize)
anchored_box = bbox.anchored(c, container=container)
- return anchored_box.x0, anchored_box.y0
+ return anchored_box.x0, anchored_box.y0
def _find_best_position(self, width, height, consider=None):
Modified: trunk/matplotlib/lib/matplotlib/rcsetup.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/rcsetup.py 2008-12-08 15:10:20 UTC (rev 6510)
+++ trunk/matplotlib/lib/matplotlib/rcsetup.py 2008-12-08 15:30:56 UTC (rev 6511)
@@ -417,6 +417,7 @@
'polaraxes.grid' : [True, validate_bool], # display polar grid or not
#legend properties
+ 'legend.fancybox' : [False,validate_bool],
'legend.loc' : ['upper right',validate_legend_loc], # at some point, this should be changed to 'best'
'legend.isaxes' : [True,validate_bool], # this option is internally ignored - it never served any useful purpose
'legend.numpoints' : [2, validate_int], # the number of points in the legend line
Modified: trunk/matplotlib/matplotlibrc.template
===================================================================
--- trunk/matplotlib/matplotlibrc.template 2008-12-08 15:10:20 UTC (rev 6510)
+++ trunk/matplotlib/matplotlibrc.template 2008-12-08 15:30:56 UTC (rev 6511)
@@ -235,6 +235,8 @@
#grid.linewidth : 0.5 # in points
### Legend
+#legend.fancybox : False # if True, use a rounded box for the
+ # legend, else a rectangle
#legend.isaxes : True
#legend.numpoints : 2 # the number of points in the legend line
#legend.fontsize : large
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|