diff --git a/lib/matplotlib/axis.py b/lib/matplotlib/axis.py index 4f174b0da45e..4cc145a19f71 100644 --- a/lib/matplotlib/axis.py +++ b/lib/matplotlib/axis.py @@ -832,6 +832,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() @@ -840,14 +843,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 f6e3f733b95b..17213d317901 100644 --- a/lib/matplotlib/tests/test_axes.py +++ b/lib/matplotlib/tests/test_axes.py @@ -4871,6 +4871,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