|
13 | 13 | from matplotlib.path import Path |
14 | 14 | from matplotlib.ticker import Formatter, Locator, FormatStrFormatter |
15 | 15 | from matplotlib.transforms import Affine2D, Affine2DBase, Bbox, \ |
16 | | - BboxTransformTo, IdentityTransform, Transform, TransformWrapper |
| 16 | + BboxTransformTo, IdentityTransform, Transform, TransformWrapper, \ |
| 17 | + ScaledTranslation, blended_transform_factory |
17 | 18 | import matplotlib.spines as mspines |
18 | 19 |
|
19 | 20 | class PolarAxes(Axes): |
@@ -287,13 +288,17 @@ def _set_lim_and_transforms(self): |
287 | 288 | Affine2D().scale(np.pi * 2.0, 1.0) + |
288 | 289 | self.transData) |
289 | 290 | # The r-axis labels are put at an angle and padded in the r-direction |
290 | | - self._r_label1_position = Affine2D().translate(22.5, self._rpad) |
| 291 | + self._r_label1_position = ScaledTranslation( |
| 292 | + 22.5, self._rpad, |
| 293 | + blended_transform_factory(Affine2D(), BboxTransformTo(self.viewLim))) |
291 | 294 | self._yaxis_text1_transform = ( |
292 | 295 | self._r_label1_position + |
293 | 296 | Affine2D().scale(1.0 / 360.0, 1.0) + |
294 | 297 | self._yaxis_transform |
295 | 298 | ) |
296 | | - self._r_label2_position = Affine2D().translate(22.5, self._rpad) |
| 299 | + self._r_label2_position = ScaledTranslation( |
| 300 | + 22.5, -self._rpad, |
| 301 | + blended_transform_factory(Affine2D(), BboxTransformTo(self.viewLim))) |
297 | 302 | self._yaxis_text2_transform = ( |
298 | 303 | self._r_label2_position + |
299 | 304 | Affine2D().scale(1.0 / 360.0, 1.0) + |
@@ -435,9 +440,10 @@ def set_rgrids(self, radii, labels=None, angle=None, rpad=None, fmt=None, |
435 | 440 | angle = self._r_label1_position.to_values()[4] |
436 | 441 | if rpad is not None: |
437 | 442 | self._rpad = rpad |
438 | | - rmax = self.get_rmax() |
439 | | - self._r_label1_position.clear().translate(angle, self._rpad * rmax) |
440 | | - self._r_label2_position.clear().translate(angle, -self._rpad * rmax) |
| 443 | + self._r_label1_position._t = (angle, self._rpad) |
| 444 | + self._r_label1_position.invalidate() |
| 445 | + self._r_label2_position._t = (angle, -self._rpad) |
| 446 | + self._r_label2_position.invalidate() |
441 | 447 | for t in self.yaxis.get_ticklabels(): |
442 | 448 | t.update(kwargs) |
443 | 449 | return self.yaxis.get_gridlines(), self.yaxis.get_ticklabels() |
@@ -516,11 +522,11 @@ def drag_pan(self, button, key, x, y): |
516 | 522 | dt = dt0 * -1.0 |
517 | 523 | dt = (dt / np.pi) * 180.0 |
518 | 524 |
|
519 | | - rpad = self._r_label1_position.to_values()[5] |
520 | | - self._r_label1_position.clear().translate( |
521 | | - p.r_label_angle - dt, rpad) |
522 | | - self._r_label2_position.clear().translate( |
523 | | - p.r_label_angle - dt, -rpad) |
| 525 | + rpad = self._rpad |
| 526 | + self._r_label1_position._t = (p.r_label_angle - dt, rpad) |
| 527 | + self._r_label1_position.invalidate() |
| 528 | + self._r_label2_position._t = (p.r_label_angle - dt, -rpad) |
| 529 | + self._r_label2_position.invalidate() |
524 | 530 |
|
525 | 531 | elif p.mode == 'zoom': |
526 | 532 | startt, startr = p.trans_inverse.transform_point((p.x, p.y)) |
|
0 commit comments