From 82f7ce20af17e9b0f8c0446f0bf3d50f7b9fe917 Mon Sep 17 00:00:00 2001 From: Elan Ernest <23121882+ImportanceOfBeingErnest@users.noreply.github.com> Date: Mon, 10 Dec 2018 01:57:48 +0100 Subject: [PATCH] Backport PR #12938: Fix xtick.minor.visible only acting on the xaxis --- lib/matplotlib/scale.py | 3 ++- lib/matplotlib/tests/test_ticker.py | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/lib/matplotlib/scale.py b/lib/matplotlib/scale.py index c4c0cdd92851..f6600751275d 100644 --- a/lib/matplotlib/scale.py +++ b/lib/matplotlib/scale.py @@ -69,7 +69,8 @@ def set_default_locators_and_formatters(self, axis): axis.set_major_formatter(ScalarFormatter()) axis.set_minor_formatter(NullFormatter()) # update the minor locator for x and y axis based on rcParams - if rcParams['xtick.minor.visible']: + if (axis.axis_name == 'x' and rcParams['xtick.minor.visible'] + or axis.axis_name == 'y' and rcParams['ytick.minor.visible']): axis.set_minor_locator(AutoMinorLocator()) else: axis.set_minor_locator(NullLocator()) diff --git a/lib/matplotlib/tests/test_ticker.py b/lib/matplotlib/tests/test_ticker.py index 77b909a4cf59..26cf9b7ab016 100644 --- a/lib/matplotlib/tests/test_ticker.py +++ b/lib/matplotlib/tests/test_ticker.py @@ -839,3 +839,21 @@ def test_minlocator_type(): fig, ax = plt.subplots() with pytest.raises(TypeError): ax.xaxis.set_minor_locator(matplotlib.ticker.LogFormatter()) + + +def test_minorticks_rc(): + fig = plt.figure() + + def minorticksubplot(xminor, yminor, i): + rc = {'xtick.minor.visible': xminor, + 'ytick.minor.visible': yminor} + with plt.rc_context(rc=rc): + ax = fig.add_subplot(2, 2, i) + + assert (len(ax.xaxis.get_minor_ticks()) > 0) == xminor + assert (len(ax.yaxis.get_minor_ticks()) > 0) == yminor + + minorticksubplot(False, False, 1) + minorticksubplot(True, False, 2) + minorticksubplot(False, True, 3) + minorticksubplot(True, True, 4)