Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 3fd822c

Browse filesBrowse files
committed
Nullary offset dynamic computers.
1 parent d3f410d commit 3fd822c
Copy full SHA for 3fd822c

File tree

Expand file treeCollapse file tree

3 files changed

+17
-16
lines changed
Filter options
Expand file treeCollapse file tree

3 files changed

+17
-16
lines changed

‎lib/matplotlib/legend.py

Copy file name to clipboardExpand all lines: lib/matplotlib/legend.py
+6-1Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -585,8 +585,11 @@ def _get_loc(self):
585585

586586
_loc = property(_get_loc, _set_loc)
587587

588-
def _findoffset(self, width, height, xdescent, ydescent, renderer):
588+
def _findoffset(self):
589589
"""Helper function to locate the legend."""
590+
renderer = self.figure._cachedRenderer or self._cached_renderer
591+
width, height, xdescent, ydescent = self._legend_box.get_extent(
592+
renderer)
590593

591594
if self._loc == 0: # "best".
592595
x, y = self._find_best_position(width, height, renderer)
@@ -882,6 +885,8 @@ def get_window_extent(self, renderer=None):
882885
# docstring inherited
883886
if renderer is None:
884887
renderer = self.figure._cachedRenderer
888+
# May not be cached on the figure, so cache it ourselves.
889+
self._cached_renderer = renderer
885890
return self._legend_box.get_window_extent(renderer=renderer)
886891

887892
def get_tightbbox(self, renderer):

‎lib/matplotlib/offsetbox.py

Copy file name to clipboardExpand all lines: lib/matplotlib/offsetbox.py
+10-14Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -263,11 +263,9 @@ def set_offset(self, xy):
263263
xy : (float, float) or callable
264264
The (x, y) coordinates of the offset in display units. These can
265265
either be given explicitly as a tuple (x, y), or by providing a
266-
function that converts the extent into the offset. This function
267-
must have the signature::
268-
269-
def offset(width, height, xdescent, ydescent, renderer) \
270-
-> (float, float)
266+
function dynamically computes an offset (taking the arguments
267+
passed to `.OffsetBox.get_offset`). It is recommended, but not
268+
compulsory, to make such functions take no arguments.
271269
"""
272270
self._offset = xy
273271
self.stale = True
@@ -340,7 +338,7 @@ def get_extent(self, renderer):
340338
def get_window_extent(self, renderer):
341339
# docstring inherited
342340
w, h, xd, yd = self.get_extent(renderer)
343-
px, py = self.get_offset(w, h, xd, yd, renderer)
341+
px, py = self.get_offset()
344342
return mtransforms.Bbox.from_bounds(px - xd, py - yd, w, h)
345343

346344
def draw(self, renderer):
@@ -349,7 +347,7 @@ def draw(self, renderer):
349347
to the given *renderer*.
350348
"""
351349
w, h, xdescent, ydescent, offsets = self.get_extent_offsets(renderer)
352-
px, py = self.get_offset(w, h, xdescent, ydescent, renderer)
350+
px, py = self.get_offset()
353351
for c, (ox, oy) in zip(self.get_visible_children(), offsets):
354352
c.set_offset((px + ox, py + oy))
355353
c.draw(renderer)
@@ -530,7 +528,7 @@ def get_extent_offsets(self, renderer):
530528
def draw(self, renderer):
531529
# docstring inherited
532530
w, h, xdescent, ydescent, offsets = self.get_extent_offsets(renderer)
533-
px, py = self.get_offset(w, h, xdescent, ydescent, renderer)
531+
px, py = self.get_offset()
534532
for c, (ox, oy) in zip(self.get_visible_children(), offsets):
535533
c.set_offset((px + ox, py + oy))
536534

@@ -1037,9 +1035,10 @@ def get_window_extent(self, renderer):
10371035
# docstring inherited
10381036
# Update the offset func, which depends on the dpi of the renderer
10391037
# (because of the padding).
1038+
w, h, xd, yd = self.get_extent(renderer)
10401039
fontsize = renderer.points_to_pixels(self.prop.get_size_in_points())
10411040

1042-
def _offset(w, h, xd, yd, renderer):
1041+
def _offset(*args, **kwargs): # args are ignored; left for backcompat.
10431042
bbox = Bbox.from_bounds(0, 0, w, h)
10441043
pad = self.borderpad * fontsize
10451044
bbox_to_anchor = self.get_bbox_to_anchor()
@@ -1065,9 +1064,7 @@ def draw(self, renderer):
10651064
self.update_frame(bbox, fontsize)
10661065
self.patch.draw(renderer)
10671066

1068-
width, height, xdescent, ydescent = self.get_extent(renderer)
1069-
1070-
px, py = self.get_offset(width, height, xdescent, ydescent, renderer)
1067+
px, py = self.get_offset()
10711068

10721069
self.get_child().set_offset((px, py))
10731070
self.get_child().draw(renderer)
@@ -1566,8 +1563,7 @@ def __init__(self, ref_artist, offsetbox, use_blit=False):
15661563
def save_offset(self):
15671564
offsetbox = self.offsetbox
15681565
renderer = offsetbox.figure._cachedRenderer
1569-
w, h, xd, yd = offsetbox.get_extent(renderer)
1570-
offset = offsetbox.get_offset(w, h, xd, yd, renderer)
1566+
offset = offsetbox.get_offset()
15711567
self.offsetbox_x, self.offsetbox_y = offset
15721568
self.offsetbox.set_offset(offset)
15731569

‎lib/mpl_toolkits/axes_grid1/inset_locator.py

Copy file name to clipboardExpand all lines: lib/mpl_toolkits/axes_grid1/inset_locator.py
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ def draw(self, renderer):
7171
def __call__(self, ax, renderer):
7272
self.axes = ax
7373
bbox = self.get_window_extent(renderer)
74-
px, py = self.get_offset(bbox.width, bbox.height, 0, 0, renderer)
74+
px, py = self.get_offset()
7575
bbox_canvas = Bbox.from_bounds(px, py, bbox.width, bbox.height)
7676
tr = ax.figure.transFigure.inverted()
7777
return TransformedBbox(bbox_canvas, tr)

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.