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

Commit19ea1dd

Browse files
committed
Fix label_outer in the presence of colorbars.
The subgridspec to be considered should be the one containing both theaxes and the colorbar, not the sub-subgridspec of just the axes.
1 parent903d537 commit19ea1dd

File tree

2 files changed

+32
-4
lines changed

2 files changed

+32
-4
lines changed

‎lib/matplotlib/axes/_base.py

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4749,13 +4749,37 @@ def label_outer(self, remove_inner_ticks=False):
47494749
self._label_outer_yaxis(skip_non_rectangular_axes=False,
47504750
remove_inner_ticks=remove_inner_ticks)
47514751

4752+
def_get_subplotspec_with_optional_colorbar(self):
4753+
"""
4754+
Return the subplotspec for this Axes, except that if this Axes has been
4755+
moved to a subgridspec to make room for a colorbar, then return the
4756+
subplotspec that encloses both this Axes and the colorbar Axes.
4757+
"""
4758+
ss=self.get_subplotspec()
4759+
ifnotss:
4760+
return
4761+
gs=ss.get_gridspec()
4762+
if (isinstance(gs,mpl.gridspec.GridSpecFromSubplotSpec)
4763+
andgs.nrows*gs.ncols==6):
4764+
foraxinself.figure.axes:
4765+
if (axisnotself
4766+
andhasattr(ax,"_colorbar_info")
4767+
andax.get_subplotspec()
4768+
andisinstance(ax.get_subplotspec().get_gridspec(),
4769+
mpl.gridspec.GridSpecFromSubplotSpec)
4770+
and (ax.get_subplotspec().get_gridspec()._subplot_spec
4771+
isgs._subplot_spec)):
4772+
ss=gs._subplot_spec
4773+
break
4774+
returnss
4775+
47524776
def_label_outer_xaxis(self,*,skip_non_rectangular_axes,
47534777
remove_inner_ticks=False):
47544778
# see documentation in label_outer.
47554779
ifskip_non_rectangular_axesandnotisinstance(self.patch,
47564780
mpl.patches.Rectangle):
47574781
return
4758-
ss=self.get_subplotspec()
4782+
ss=self._get_subplotspec_with_optional_colorbar()
47594783
ifnotss:
47604784
return
47614785
label_position=self.xaxis.get_label_position()
@@ -4782,7 +4806,7 @@ def _label_outer_yaxis(self, *, skip_non_rectangular_axes,
47824806
ifskip_non_rectangular_axesandnotisinstance(self.patch,
47834807
mpl.patches.Rectangle):
47844808
return
4785-
ss=self.get_subplotspec()
4809+
ss=self._get_subplotspec_with_optional_colorbar()
47864810
ifnotss:
47874811
return
47884812
label_position=self.yaxis.get_label_position()

‎lib/matplotlib/tests/test_subplots.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
importnumpyasnp
55
importpytest
66

7+
importmatplotlibasmpl
78
frommatplotlib.axesimportAxes,SubplotBase
89
importmatplotlib.pyplotasplt
910
frommatplotlib.testing.decoratorsimportcheck_figures_equal,image_comparison
@@ -111,10 +112,13 @@ def test_shared():
111112

112113

113114
@pytest.mark.parametrize('remove_ticks', [True,False])
114-
deftest_label_outer(remove_ticks):
115-
f,axs=plt.subplots(2,2,sharex=True,sharey=True)
115+
@pytest.mark.parametrize('with_colorbar', [True,False])
116+
deftest_label_outer(remove_ticks,with_colorbar):
117+
fig,axs=plt.subplots(2,2,sharex=True,sharey=True)
116118
foraxinaxs.flat:
117119
ax.set(xlabel="foo",ylabel="bar")
120+
ifwith_colorbar:
121+
fig.colorbar(mpl.cm.ScalarMappable(),ax=ax)
118122
ax.label_outer(remove_inner_ticks=remove_ticks)
119123
check_ticklabel_visible(
120124
axs.flat, [False,False,True,True], [True,False,True,False])

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp