Skip to content

Commit c326744

Browse files
committed
Simplified logic in _update_label_position to use the bounding box of all ticklabels and axis spine for use in label placement
1 parent 97bbf59 commit c326744

File tree

1 file changed

+27
-36
lines changed

1 file changed

+27
-36
lines changed

lib/matplotlib/axis.py

Lines changed: 27 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1569,9 +1569,8 @@ def set_ticks(self, ticks, minor=False):
15691569

15701570
def _update_label_position(self, bboxes, bboxes2):
15711571
"""
1572-
Update the label position based on the sequence of bounding
1573-
boxes of all the ticklabels or using the axis spines if no
1574-
ticklabels are present
1572+
Update the label position based on the the bounding box enclosing
1573+
all the ticklabels and axis spine
15751574
"""
15761575
raise NotImplementedError('Derived must override')
15771576

@@ -1726,33 +1725,30 @@ def set_label_position(self, position):
17261725

17271726
def _update_label_position(self, bboxes, bboxes2):
17281727
"""
1729-
Update the label position based on the sequence of bounding
1730-
boxes of all the ticklabels or using the axis spines if no
1731-
ticklabels are present
1728+
Update the label position based on the the bounding box enclosing
1729+
all the ticklabels and axis spine
17321730
"""
17331731
if not self._autolabelpos:
17341732
return
17351733
x, y = self.label.get_position()
17361734
if self.label_position == 'bottom':
1737-
if not len(bboxes):
1738-
bottom = (self.axes.spines['bottom'].get_transform().
1739-
transform_path(self.axes.spines['bottom'].
1740-
get_path()).get_extents().ymin)
1741-
else:
1742-
bbox = mtransforms.Bbox.union(bboxes)
1743-
bottom = bbox.y0
1735+
spinebbox = (self.axes.spines['bottom'].get_transform().
1736+
transform_path(self.axes.spines['bottom'].
1737+
get_path()).get_extents())
1738+
bbox = mtransforms.Bbox.union(bboxes + [spinebbox])
1739+
bottom = bbox.y0
1740+
17441741
self.label.set_position(
17451742
(x, bottom - self.labelpad * self.figure.dpi / 72.0)
17461743
)
17471744

17481745
else:
1749-
if not len(bboxes2):
1750-
top = (self.axes.spines['top'].get_transform().
1751-
transform_path(self.axes.spines['top'].
1752-
get_path()).get_extents().ymax)
1753-
else:
1754-
bbox = mtransforms.Bbox.union(bboxes2)
1755-
top = bbox.y1
1746+
spinebbox = (self.axes.spines['top'].get_transform().
1747+
transform_path(self.axes.spines['top'].
1748+
get_path()).get_extents())
1749+
bbox = mtransforms.Bbox.union(bboxes2 + [spinebbox])
1750+
top = bbox.y1
1751+
17561752
self.label.set_position(
17571753
(x, top + self.labelpad * self.figure.dpi / 72.0)
17581754
)
@@ -2037,34 +2033,29 @@ def set_label_position(self, position):
20372033

20382034
def _update_label_position(self, bboxes, bboxes2):
20392035
"""
2040-
Update the label position based on the sequence of bounding
2041-
boxes of all the ticklabels or using the axis spines if no
2042-
ticklabels are present
2036+
Update the label position based on the the bounding box enclosing
2037+
all the ticklabels and axis spine
20432038
"""
20442039
if not self._autolabelpos:
20452040
return
20462041
x, y = self.label.get_position()
20472042
if self.label_position == 'left':
2048-
if not len(bboxes):
2049-
left = (self.axes.spines['left'].get_transform().
2050-
transform_path(self.axes.spines['left'].
2051-
get_path()).get_extents().xmin)
2052-
else:
2053-
bbox = mtransforms.Bbox.union(bboxes)
2054-
left = bbox.x0
2043+
spinebbox = (self.axes.spines['left'].get_transform().
2044+
transform_path(self.axes.spines['left'].
2045+
get_path()).get_extents())
2046+
bbox = mtransforms.Bbox.union(bboxes + [spinebbox])
2047+
left = bbox.x0
20552048

20562049
self.label.set_position(
20572050
(left - self.labelpad * self.figure.dpi / 72.0, y)
20582051
)
20592052

20602053
else:
2061-
if not len(bboxes2):
2062-
right = (self.axes.spines['right'].get_transform().
2054+
spinebbox = (self.axes.spines['right'].get_transform().
20632055
transform_path(self.axes.spines['right'].
2064-
get_path()).get_extents().xmax)
2065-
else:
2066-
bbox = mtransforms.Bbox.union(bboxes2)
2067-
right = bbox.x1
2056+
get_path()).get_extents())
2057+
bbox = mtransforms.Bbox.union(bboxes2 + [spinebbox])
2058+
right = bbox.x1
20682059

20692060
self.label.set_position(
20702061
(right + self.labelpad * self.figure.dpi / 72.0, y)

0 commit comments

Comments
 (0)