Skip to content

Commit 8000fcc

Browse files
committed
MNT: Prevent users from erroneously using legend label API on Axis
Closes #27971. For a complete explanation see #27971 (comment)
1 parent fe6389f commit 8000fcc

File tree

7 files changed

+31
-18
lines changed

7 files changed

+31
-18
lines changed

galleries/examples/axes_grid1/parasite_simple.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121
host.legend(labelcolor="linecolor")
2222

23-
host.yaxis.get_label().set_color(p1.get_color())
24-
par.yaxis.get_label().set_color(p2.get_color())
23+
host.yaxis.label.set_color(p1.get_color())
24+
par.yaxis.label.set_color(p2.get_color())
2525

2626
plt.show()

lib/matplotlib/axes/_base.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -777,8 +777,8 @@ def __repr__(self):
777777
if titles:
778778
fields += [f"title={titles}"]
779779
for name, axis in self._axis_map.items():
780-
if axis.get_label() and axis.get_label().get_text():
781-
fields += [f"{name}label={axis.get_label().get_text()!r}"]
780+
if axis.label and axis.label.get_text():
781+
fields += [f"{name}label={axis.label.get_text()!r}"]
782782
return f"<{self.__class__.__name__}: " + ", ".join(fields) + ">"
783783

784784
def get_subplotspec(self):
@@ -3517,7 +3517,7 @@ def get_xlabel(self):
35173517
"""
35183518
Get the xlabel text string.
35193519
"""
3520-
label = self.xaxis.get_label()
3520+
label = self.xaxis.label
35213521
return label.get_text()
35223522

35233523
def set_xlabel(self, xlabel, fontdict=None, labelpad=None, *,
@@ -3770,7 +3770,7 @@ def get_ylabel(self):
37703770
"""
37713771
Get the ylabel text string.
37723772
"""
3773-
label = self.yaxis.get_label()
3773+
label = self.yaxis.label
37743774
return label.get_text()
37753775

37763776
def set_ylabel(self, ylabel, fontdict=None, labelpad=None, *,

lib/matplotlib/axis.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1421,8 +1421,21 @@ def get_gridlines(self):
14211421
return cbook.silent_list('Line2D gridline',
14221422
[tick.gridline for tick in ticks])
14231423

1424+
def set_label(self, s):
1425+
"""Assigning legend labels is supported. Raises RuntimeError."""
1426+
raise RuntimeError(
1427+
"A legend label cannot be assigned to an Axis. Did you mean to "
1428+
"set the axis label via set_label_text()?")
1429+
14241430
def get_label(self):
1425-
"""Return the axis label as a Text instance."""
1431+
"""
1432+
Return the axis label as a Text instance.
1433+
1434+
.. admonition:: Discouraged
1435+
1436+
This overrides `.Artist.get_label`, which is for legend labels, with a new
1437+
semantic. It is recommended to use the attribute `.Axis.label` instead.
1438+
"""
14261439
return self.label
14271440

14281441
def get_offset_text(self):

lib/matplotlib/backends/qt_editor/figureoptions.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ def convert_limits(lim, converter):
5454
(None, f"<b>{name.title()}-Axis</b>"),
5555
('Min', axis_limits[name][0]),
5656
('Max', axis_limits[name][1]),
57-
('Label', axis.get_label().get_text()),
57+
('Label', axis.label.get_text()),
5858
('Scale', [axis.get_scale(),
5959
'linear', 'log', 'symlog', 'logit']),
6060
sep,

lib/matplotlib/tests/test_axes.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -136,20 +136,20 @@ def test_label_shift():
136136
# Test label re-centering on x-axis
137137
ax.set_xlabel("Test label", loc="left")
138138
ax.set_xlabel("Test label", loc="center")
139-
assert ax.xaxis.get_label().get_horizontalalignment() == "center"
139+
assert ax.xaxis.label.get_horizontalalignment() == "center"
140140
ax.set_xlabel("Test label", loc="right")
141-
assert ax.xaxis.get_label().get_horizontalalignment() == "right"
141+
assert ax.xaxis.label.get_horizontalalignment() == "right"
142142
ax.set_xlabel("Test label", loc="center")
143-
assert ax.xaxis.get_label().get_horizontalalignment() == "center"
143+
assert ax.xaxis.label.get_horizontalalignment() == "center"
144144

145145
# Test label re-centering on y-axis
146146
ax.set_ylabel("Test label", loc="top")
147147
ax.set_ylabel("Test label", loc="center")
148-
assert ax.yaxis.get_label().get_horizontalalignment() == "center"
148+
assert ax.yaxis.label.get_horizontalalignment() == "center"
149149
ax.set_ylabel("Test label", loc="bottom")
150-
assert ax.yaxis.get_label().get_horizontalalignment() == "left"
150+
assert ax.yaxis.label.get_horizontalalignment() == "left"
151151
ax.set_ylabel("Test label", loc="center")
152-
assert ax.yaxis.get_label().get_horizontalalignment() == "center"
152+
assert ax.yaxis.label.get_horizontalalignment() == "center"
153153

154154

155155
@check_figures_equal(extensions=["png"])
@@ -8421,7 +8421,7 @@ def test_ylabel_ha_with_position(ha):
84218421
ax = fig.subplots()
84228422
ax.set_ylabel("test", y=1, ha=ha)
84238423
ax.yaxis.set_label_position("right")
8424-
assert ax.yaxis.get_label().get_ha() == ha
8424+
assert ax.yaxis.label.get_ha() == ha
84258425

84268426

84278427
def test_bar_label_location_vertical():

lib/mpl_toolkits/axisartist/axis_artist.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -312,13 +312,13 @@ def get_pad(self):
312312

313313
def get_ref_artist(self):
314314
# docstring inherited
315-
return self._axis.get_label()
315+
return self._axis.label
316316

317317
def get_text(self):
318318
# docstring inherited
319319
t = super().get_text()
320320
if t == "__from_axes__":
321-
return self._axis.get_label().get_text()
321+
return self._axis.label.get_text()
322322
return self._text
323323

324324
_default_alignments = dict(left=("bottom", "center"),

lib/mpl_toolkits/mplot3d/axes3d.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1801,7 +1801,7 @@ def get_zlabel(self):
18011801
"""
18021802
Get the z-label text string.
18031803
"""
1804-
label = self.zaxis.get_label()
1804+
label = self.zaxis.label
18051805
return label.get_text()
18061806

18071807
# Axes rectangle characteristics

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy