From d6121a1379dbc646f1047a78b22f7900d6189120 Mon Sep 17 00:00:00 2001 From: cvanelteren Date: Sun, 23 Feb 2025 09:05:58 +0100 Subject: [PATCH 1/6] explicitly override minor locator if given --- ultraplot/axes/base.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ultraplot/axes/base.py b/ultraplot/axes/base.py index f84d602e9..d716650e5 100644 --- a/ultraplot/axes/base.py +++ b/ultraplot/axes/base.py @@ -1159,6 +1159,8 @@ def _add_colorbar( locator = mticker.FixedLocator(ticks) else: locator = pticker.DiscreteLocator(ticks) + + if tickminor and minorlocator is None: minorlocator = pticker.DiscreteLocator(ticks, minor=True) @@ -1213,9 +1215,13 @@ def _add_colorbar( # obj.minorlocator = minorlocator # backwards compatibility obj.update_ticks = guides._update_ticks.__get__(obj) # backwards compatible if minorlocator is not None: + current = obj.minorlocator + if current != minorlocator: + obj.minorlocator = minorlocator obj.update_ticks() elif tickminor: obj.minorticks_on() + print(obj.minorlocator.values(0, 1)) else: obj.minorticks_off() if getattr(norm, "descending", None): From d4bbcd1c3f20af657af85a01ff5137d5ea9d6de7 Mon Sep 17 00:00:00 2001 From: cvanelteren Date: Sun, 23 Feb 2025 09:12:30 +0100 Subject: [PATCH 2/6] removed print statement --- ultraplot/axes/base.py | 1 - 1 file changed, 1 deletion(-) diff --git a/ultraplot/axes/base.py b/ultraplot/axes/base.py index d716650e5..eb2609d41 100644 --- a/ultraplot/axes/base.py +++ b/ultraplot/axes/base.py @@ -1221,7 +1221,6 @@ def _add_colorbar( obj.update_ticks() elif tickminor: obj.minorticks_on() - print(obj.minorlocator.values(0, 1)) else: obj.minorticks_off() if getattr(norm, "descending", None): From 4e6357a7086480b9216d17ef729bb535a6894b42 Mon Sep 17 00:00:00 2001 From: cvanelteren Date: Sun, 23 Feb 2025 09:13:09 +0100 Subject: [PATCH 3/6] added comment --- ultraplot/axes/base.py | 1 + 1 file changed, 1 insertion(+) diff --git a/ultraplot/axes/base.py b/ultraplot/axes/base.py index eb2609d41..b1f92ab24 100644 --- a/ultraplot/axes/base.py +++ b/ultraplot/axes/base.py @@ -1215,6 +1215,7 @@ def _add_colorbar( # obj.minorlocator = minorlocator # backwards compatibility obj.update_ticks = guides._update_ticks.__get__(obj) # backwards compatible if minorlocator is not None: + # Note we make use of mpl's setters and getters current = obj.minorlocator if current != minorlocator: obj.minorlocator = minorlocator From d0def11e2f318d55faa6ef73e8313c112d0a5717 Mon Sep 17 00:00:00 2001 From: cvanelteren Date: Sun, 23 Feb 2025 09:13:45 +0100 Subject: [PATCH 4/6] black formatting --- ultraplot/axes/base.py | 1 - 1 file changed, 1 deletion(-) diff --git a/ultraplot/axes/base.py b/ultraplot/axes/base.py index b1f92ab24..1fb9a843f 100644 --- a/ultraplot/axes/base.py +++ b/ultraplot/axes/base.py @@ -1160,7 +1160,6 @@ def _add_colorbar( else: locator = pticker.DiscreteLocator(ticks) - if tickminor and minorlocator is None: minorlocator = pticker.DiscreteLocator(ticks, minor=True) From f970aaded137f86a4307500522f8d51a20c0bbad Mon Sep 17 00:00:00 2001 From: cvanelteren Date: Sun, 23 Feb 2025 09:24:08 +0100 Subject: [PATCH 5/6] added comments to unittest --- ultraplot/tests/test_colorbar.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/ultraplot/tests/test_colorbar.py b/ultraplot/tests/test_colorbar.py index 9a02947ad..0a12deaec 100644 --- a/ultraplot/tests/test_colorbar.py +++ b/ultraplot/tests/test_colorbar.py @@ -251,3 +251,19 @@ def test_reversed_levels(): ax.pcolormesh(data, colorbar="b", **kw) i += 1 return fig + + +@pytest.mark.mpl_image_compare +def test_minor_override(): + """Test minor ticks override.""" + # Setting a custom minor tick should override the settings. Here we set the ticks to 1 and the minorticks to half that. We then check that the minor ticks are set correctly + data = state.rand(10, 10) + left, right, minor, n = 0, 1, 0.05, 11 + levels = np.linspace(left, right, n) + fig, ax = uplt.subplots() + m = ax.pcolormesh(data, colorbar="b", levels=levels) + cax = ax.colorbar(m, minorticks=minor) + assert np.allclose( + cax.minorlocator.tick_values(left, right), + np.linspace(left - minor, right + minor, n * 2 + 1), + ) From b39c041ab2454b9b08e2d31566a44b2bad3bb3a5 Mon Sep 17 00:00:00 2001 From: cvanelteren Date: Sun, 23 Feb 2025 11:33:24 +0100 Subject: [PATCH 6/6] add return --- ultraplot/tests/test_colorbar.py | 1 + 1 file changed, 1 insertion(+) diff --git a/ultraplot/tests/test_colorbar.py b/ultraplot/tests/test_colorbar.py index 0a12deaec..bb165d853 100644 --- a/ultraplot/tests/test_colorbar.py +++ b/ultraplot/tests/test_colorbar.py @@ -267,3 +267,4 @@ def test_minor_override(): cax.minorlocator.tick_values(left, right), np.linspace(left - minor, right + minor, n * 2 + 1), ) + return fig