Skip to content

FIX: Ensure Locators on RadialAxis are always correctly wrapped #30174

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

timhoffm
Copy link
Member

All the wrapping logic is now done whenever a new locator is set in RadialAxis.

Closes #30164 and rearchitects #29798.

All the wrapping logic is now contained in RadialAxis

Closes matplotlib#30164 and rearchitects matplotlib#29798.
@timhoffm
Copy link
Member Author

test_polar_alignment fails. The tick 0.0 is now missing but I don't understand how the change is affecting it.

image

@dstansby
Copy link
Member

dstansby commented Jun 18, 2025

If you stick a print(fig.axes[0].yaxis.get_major_locator()) at the end of that test, before this PR it gives a FixedLocator, but after it gives a RadialLocator. Makes sense, but I guess that might be the root cause of the failing image test.

@dstansby
Copy link
Member

diff --git a/lib/matplotlib/projections/polar.py b/lib/matplotlib/projections/polar.py
index f20498b271..40f431aefb 100644
--- a/lib/matplotlib/projections/polar.py
+++ b/lib/matplotlib/projections/polar.py
@@ -444,7 +444,7 @@ class RadialLocator(mticker.Locator):
             if _is_full_circle_rad(*self._axes.viewLim.intervalx):
                 rorigin = self._axes.get_rorigin() * self._axes.get_rsign()
                 if self._axes.get_rmin() <= rorigin:
-                    return [tick for tick in self.base() if tick > rorigin]
+                    return [tick for tick in self.base() if tick >= rorigin]
         return self.base()
 
     def _zero_in_bounds(self):

☝️ fixes the test that's broken - seems like a sensible change to make, but I'm not sure if it breaks any other tests.

@timhoffm
Copy link
Member Author

timhoffm commented Jun 19, 2025

Thanks for figuring out. Actually, there is no tick at the center in all the polar examples.

From a quick look, I don’t fully understand the code you pointed to, but given this is under the is_full_circle_rad condition, it might be intentional to leave out the tick at the center. Will need to have a closer look at context conditions and history of that code.

cross check: MATLAB does not do this. So it’s at least not something built in to match their behavior.

Copy link
Member

@QuLogic QuLogic left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, other than fixing the test.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Bug]: Removing spines in polar plot causes distortion of the plot
4 participants