diff --git a/lib/matplotlib/axis.py b/lib/matplotlib/axis.py index 441e659e7baf..18797782e736 100644 --- a/lib/matplotlib/axis.py +++ b/lib/matplotlib/axis.py @@ -859,6 +859,9 @@ def set_tick_params(self, which='major', reset=False, **kw): if which == 'minor' or which == 'both': dicts.append(self._minor_tick_kw) kwtrans = self._translate_tick_kw(kw) + + # this stashes the parameter changes so any new ticks will + # automatically get them for d in dicts: if reset: d.clear() @@ -867,14 +870,18 @@ def set_tick_params(self, which='major', reset=False, **kw): if reset: self.reset_ticks() else: + # apply the new kwargs to the existing ticks if which == 'major' or which == 'both': for tick in self.majorTicks: - tick._apply_params(**self._major_tick_kw) + tick._apply_params(**kwtrans) if which == 'minor' or which == 'both': for tick in self.minorTicks: - tick._apply_params(**self._minor_tick_kw) + tick._apply_params(**kwtrans) + # special-case label color to also apply to the offset + # text if 'labelcolor' in kwtrans: self.offsetText.set_color(kwtrans['labelcolor']) + self.stale = True @staticmethod diff --git a/lib/matplotlib/tests/baseline_images/test_axes/retain_tick_visibility.png b/lib/matplotlib/tests/baseline_images/test_axes/retain_tick_visibility.png new file mode 100644 index 000000000000..7ac4cb6f6fbd Binary files /dev/null and b/lib/matplotlib/tests/baseline_images/test_axes/retain_tick_visibility.png differ diff --git a/lib/matplotlib/tests/test_axes.py b/lib/matplotlib/tests/test_axes.py index 25dc08dc5420..c66999d5d69c 100644 --- a/lib/matplotlib/tests/test_axes.py +++ b/lib/matplotlib/tests/test_axes.py @@ -4922,6 +4922,17 @@ def test_set_get_ticklabels(): ax[1].set_yticklabels(ax[0].get_yticklabels()) +@image_comparison( + baseline_images=['retain_tick_visibility'], + extensions=['png'], +) +def test_retain_tick_visibility(): + fig, ax = plt.subplots() + plt.plot([0, 1, 2], [0, -1, 4]) + plt.setp(ax.get_yticklabels(), visible=False) + ax.tick_params(axis="y", which="both", length=0) + + def test_tick_label_update(): # test issue 9397