Skip to content

Commit f8da37b

Browse files
committed
Handle plots with no spines or transformations with non-standard spines
1 parent ef683df commit f8da37b

File tree

1 file changed

+28
-16
lines changed

1 file changed

+28
-16
lines changed

lib/matplotlib/axis.py

Lines changed: 28 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1732,21 +1732,27 @@ def _update_label_position(self, bboxes, bboxes2):
17321732
return
17331733
x, y = self.label.get_position()
17341734
if self.label_position == 'bottom':
1735-
spine = self.axes.spines['bottom']
1736-
spinebbox = spine.get_transform().transform_path(
1737-
spine.get_path()).get_extents()
1738-
bbox = mtransforms.Bbox.union(bboxes + [spinebbox])
1735+
try:
1736+
spine = self.axes.spines['bottom']
1737+
spinebboxes = [spine.get_transform().transform_path(
1738+
spine.get_path()).get_extents()]
1739+
except KeyError:
1740+
spinebboxes = []
1741+
bbox = mtransforms.Bbox.union(bboxes + spinebboxes)
17391742
bottom = bbox.y0
17401743

17411744
self.label.set_position(
17421745
(x, bottom - self.labelpad * self.figure.dpi / 72.0)
17431746
)
17441747

17451748
else:
1746-
spine = self.axes.spines['top']
1747-
spinebbox = spine.get_transform().transform_path(
1748-
spine.get_path()).get_extents()
1749-
bbox = mtransforms.Bbox.union(bboxes2 + [spinebbox])
1749+
try:
1750+
spine = self.axes.spines['top']
1751+
spinebboxes = [spine.get_transform().transform_path(
1752+
spine.get_path()).get_extents()]
1753+
except KeyError:
1754+
spinebboxes = []
1755+
bbox = mtransforms.Bbox.union(bboxes2 + spinebboxes)
17501756
top = bbox.y1
17511757

17521758
self.label.set_position(
@@ -2040,21 +2046,27 @@ def _update_label_position(self, bboxes, bboxes2):
20402046
return
20412047
x, y = self.label.get_position()
20422048
if self.label_position == 'left':
2043-
spine = self.axes.spines['left']
2044-
spinebbox = spine.get_transform().transform_path(
2045-
spine.get_path()).get_extents()
2046-
bbox = mtransforms.Bbox.union(bboxes + [spinebbox])
2049+
try:
2050+
spine = self.axes.spines['left']
2051+
spinebboxes = [spine.get_transform().transform_path(
2052+
spine.get_path()).get_extents()]
2053+
except KeyError:
2054+
spinebboxes = []
2055+
bbox = mtransforms.Bbox.union(bboxes + spinebboxes)
20472056
left = bbox.x0
20482057

20492058
self.label.set_position(
20502059
(left - self.labelpad * self.figure.dpi / 72.0, y)
20512060
)
20522061

20532062
else:
2054-
spine = self.axes.spines['right']
2055-
spinebbox = spine.get_transform().transform_path(
2056-
spine.get_path()).get_extents()
2057-
bbox = mtransforms.Bbox.union(bboxes2 + [spinebbox])
2063+
try:
2064+
spine = self.axes.spines['right']
2065+
spinebboxes = [spine.get_transform().transform_path(
2066+
spine.get_path()).get_extents()]
2067+
except KeyError:
2068+
spinebboxes = []
2069+
bbox = mtransforms.Bbox.union(bboxes2 + spinebboxes)
20582070
right = bbox.x1
20592071

20602072
self.label.set_position(

0 commit comments

Comments
 (0)