|
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