Skip to content

Commit f063fd2

Browse files
committed
Fix polar transform with non-linear scales
1 parent 4278c8a commit f063fd2

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

lib/matplotlib/projections/polar.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ class PolarTransform(mtransforms.Transform):
3030
input_dims = output_dims = 2
3131

3232
def __init__(self, axis=None, use_rmin=True,
33-
_apply_theta_transforms=True):
33+
_apply_theta_transforms=True, *, scale_transform=None):
3434
"""
3535
Parameters
3636
----------
@@ -46,12 +46,17 @@ def __init__(self, axis=None, use_rmin=True,
4646
self._axis = axis
4747
self._use_rmin = use_rmin
4848
self._apply_theta_transforms = _apply_theta_transforms
49+
self._scale_transform = scale_transform
4950

5051
__str__ = mtransforms._make_str_method(
5152
"_axis",
5253
use_rmin="_use_rmin",
5354
_apply_theta_transforms="_apply_theta_transforms")
5455

56+
def _get_rorigin(self):
57+
# Get lower r limit after being scaled by the radial scale transform
58+
return self._scale_transform.transform((0, self._axis.get_rorigin()))[1]
59+
5560
def transform_non_affine(self, tr):
5661
# docstring inherited
5762
theta, r = np.transpose(tr)
@@ -61,7 +66,7 @@ def transform_non_affine(self, tr):
6166
theta *= self._axis.get_theta_direction()
6267
theta += self._axis.get_theta_offset()
6368
if self._use_rmin and self._axis is not None:
64-
r = (r - self._axis.get_rorigin()) * self._axis.get_rsign()
69+
r = (r - self._get_rorigin()) * self._axis.get_rsign()
6570
r = np.where(r >= 0, r, np.nan)
6671
return np.column_stack([r * np.cos(theta), r * np.sin(theta)])
6772

@@ -85,7 +90,7 @@ def transform_path_non_affine(self, path):
8590
# that behavior here.
8691
last_td, td = np.rad2deg([last_t, t])
8792
if self._use_rmin and self._axis is not None:
88-
r = ((r - self._axis.get_rorigin())
93+
r = ((r - self._get_rorigin())
8994
* self._axis.get_rsign())
9095
if last_td <= td:
9196
while td - last_td > 360:
@@ -877,7 +882,7 @@ def _set_lim_and_transforms(self):
877882
# data. This one is aware of rmin
878883
self.transProjection = self.PolarTransform(
879884
self,
880-
_apply_theta_transforms=False)
885+
_apply_theta_transforms=False, scale_transform=self.transScale)
881886
# Add dependency on rorigin.
882887
self.transProjection.set_children(self._originViewLim)
883888

0 commit comments

Comments
 (0)