Movatterモバイル変換


[0]ホーム

URL:


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

Sign up
Appearance settings

MNT: Prevent users from erroneously using legend label API on Axis#28584

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Merged
ksunden merged 1 commit intomatplotlib:mainfromtimhoffm:axis-get-label
Sep 30, 2024
Merged
Show file tree
Hide file tree
Changes fromall commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletionsgalleries/examples/axes_grid1/parasite_simple.py
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -20,7 +20,7 @@

host.legend(labelcolor="linecolor")

host.yaxis.get_label().set_color(p1.get_color())
par.yaxis.get_label().set_color(p2.get_color())
host.yaxis.label.set_color(p1.get_color())
par.yaxis.label.set_color(p2.get_color())

plt.show()
8 changes: 4 additions & 4 deletionslib/matplotlib/axes/_base.py
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -777,8 +777,8 @@ def __repr__(self):
if titles:
fields += [f"title={titles}"]
for name, axis in self._axis_map.items():
if axis.get_label() and axis.get_label().get_text():
fields += [f"{name}label={axis.get_label().get_text()!r}"]
if axis.label and axis.label.get_text():
fields += [f"{name}label={axis.label.get_text()!r}"]
return f"<{self.__class__.__name__}: " + ", ".join(fields) + ">"

def get_subplotspec(self):
Expand DownExpand Up@@ -3517,7 +3517,7 @@ def get_xlabel(self):
"""
Get the xlabel text string.
"""
label = self.xaxis.get_label()
label = self.xaxis.label
return label.get_text()

def set_xlabel(self, xlabel, fontdict=None, labelpad=None, *,
Expand DownExpand Up@@ -3770,7 +3770,7 @@ def get_ylabel(self):
"""
Get the ylabel text string.
"""
label = self.yaxis.get_label()
label = self.yaxis.label
return label.get_text()

def set_ylabel(self, ylabel, fontdict=None, labelpad=None, *,
Expand Down
15 changes: 14 additions & 1 deletionlib/matplotlib/axis.py
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -1421,8 +1421,21 @@
return cbook.silent_list('Line2D gridline',
[tick.gridline for tick in ticks])

def set_label(self, s):
"""Assigning legend labels is not supported. Raises RuntimeError."""
raise RuntimeError(

Check warning on line 1426 in lib/matplotlib/axis.py

View check run for this annotation

Codecov/ codecov/patch

lib/matplotlib/axis.py#L1426

Added line #L1426 was not covered by tests
"A legend label cannot be assigned to an Axis. Did you mean to "
"set the axis label via set_label_text()?")

def get_label(self):
"""Return the axis label as a Text instance."""
"""
Return the axis label as a Text instance.

.. admonition:: Discouraged

This overrides `.Artist.get_label`, which is for legend labels, with a new
semantic. It is recommended to use the attribute ``Axis.label`` instead.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

Can we getAxis.label documented so this will link?

Copy link
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

The way attributes are currently documented - Attributes section in the class docstring (https://matplotlib.org/stable/api/axis_api.html#matplotlib.axis.Axis) - they cannot be referenced. I believe we must swich to something like#28825. But before going full scale, we should test it onAxes in#28825. This is far beyond this PR. I would like to get this PR into 3.10, but don't want to push the documentation restructuring for it. For now, I suggest that literal is good enough and we can do attribute linking when there is time.

"""
return self.label

def get_offset_text(self):
Expand Down
2 changes: 1 addition & 1 deletionlib/matplotlib/backends/qt_editor/figureoptions.py
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -54,7 +54,7 @@ def convert_limits(lim, converter):
(None, f"<b>{name.title()}-Axis</b>"),
('Min', axis_limits[name][0]),
('Max', axis_limits[name][1]),
('Label', axis.get_label().get_text()),
('Label', axis.label.get_text()),
('Scale', [axis.get_scale(),
'linear', 'log', 'symlog', 'logit']),
sep,
Expand Down
14 changes: 7 additions & 7 deletionslib/matplotlib/tests/test_axes.py
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -136,20 +136,20 @@ def test_label_shift():
# Test label re-centering on x-axis
ax.set_xlabel("Test label", loc="left")
ax.set_xlabel("Test label", loc="center")
assert ax.xaxis.get_label().get_horizontalalignment() == "center"
assert ax.xaxis.label.get_horizontalalignment() == "center"
ax.set_xlabel("Test label", loc="right")
assert ax.xaxis.get_label().get_horizontalalignment() == "right"
assert ax.xaxis.label.get_horizontalalignment() == "right"
ax.set_xlabel("Test label", loc="center")
assert ax.xaxis.get_label().get_horizontalalignment() == "center"
assert ax.xaxis.label.get_horizontalalignment() == "center"

# Test label re-centering on y-axis
ax.set_ylabel("Test label", loc="top")
ax.set_ylabel("Test label", loc="center")
assert ax.yaxis.get_label().get_horizontalalignment() == "center"
assert ax.yaxis.label.get_horizontalalignment() == "center"
ax.set_ylabel("Test label", loc="bottom")
assert ax.yaxis.get_label().get_horizontalalignment() == "left"
assert ax.yaxis.label.get_horizontalalignment() == "left"
ax.set_ylabel("Test label", loc="center")
assert ax.yaxis.get_label().get_horizontalalignment() == "center"
assert ax.yaxis.label.get_horizontalalignment() == "center"


@check_figures_equal(extensions=["png"])
Expand DownExpand Up@@ -8421,7 +8421,7 @@ def test_ylabel_ha_with_position(ha):
ax = fig.subplots()
ax.set_ylabel("test", y=1, ha=ha)
ax.yaxis.set_label_position("right")
assert ax.yaxis.get_label().get_ha() == ha
assert ax.yaxis.label.get_ha() == ha


def test_bar_label_location_vertical():
Expand Down
4 changes: 2 additions & 2 deletionslib/mpl_toolkits/axisartist/axis_artist.py
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -312,13 +312,13 @@ def get_pad(self):

def get_ref_artist(self):
# docstring inherited
return self._axis.get_label()
return self._axis.label

def get_text(self):
# docstring inherited
t = super().get_text()
if t == "__from_axes__":
return self._axis.get_label().get_text()
return self._axis.label.get_text()
return self._text

_default_alignments = dict(left=("bottom", "center"),
Expand Down
2 changes: 1 addition & 1 deletionlib/mpl_toolkits/mplot3d/axes3d.py
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -1801,7 +1801,7 @@ def get_zlabel(self):
"""
Get the z-label text string.
"""
label = self.zaxis.get_label()
label = self.zaxis.label
return label.get_text()

# Axes rectangle characteristics
Expand Down
Loading

[8]ページ先頭

©2009-2025 Movatter.jp