@@ -62,7 +62,7 @@ def transform(self, tr):
62
62
63
63
t *= theta_direction
64
64
t += theta_offset
65
-
65
+
66
66
if rmin != 0 :
67
67
r = r - rmin
68
68
mask = r < 0
@@ -149,7 +149,7 @@ def transform(self, xy):
149
149
rmin = 0
150
150
theta_offset = 0
151
151
theta_direction = 1
152
-
152
+
153
153
x = xy [:, 0 :1 ]
154
154
y = xy [:, 1 :]
155
155
r = np .sqrt (x * x + y * y )
@@ -160,7 +160,7 @@ def transform(self, xy):
160
160
theta *= theta_direction
161
161
162
162
r += rmin
163
-
163
+
164
164
return np .concatenate ((theta , r ), 1 )
165
165
transform .__doc__ = Transform .transform .__doc__
166
166
@@ -229,7 +229,6 @@ def __init__(self, *args, **kwargs):
229
229
interpolation.
230
230
"""
231
231
232
- self ._rpad = 0.05
233
232
self .resolution = kwargs .pop ('resolution' , None )
234
233
if self .resolution not in (None , 1 ):
235
234
warnings .warn (
@@ -261,7 +260,7 @@ def cla(self):
261
260
262
261
self .set_theta_offset (0 )
263
262
self .set_theta_direction (1 )
264
-
263
+
265
264
def _init_axis (self ):
266
265
"move this out of __init__ because non-separable axes don't use it"
267
266
self .xaxis = maxis .XAxis (self )
@@ -319,21 +318,10 @@ def _set_lim_and_transforms(self):
319
318
Affine2D ().scale (np .pi * 2.0 , 1.0 ) +
320
319
self .transData )
321
320
# The r-axis labels are put at an angle and padded in the r-direction
322
- self ._r_label1_position = ScaledTranslation (
323
- 22.5 , self ._rpad ,
324
- blended_transform_factory (
325
- Affine2D (), BboxTransformToMaxOnly (self .viewLim )))
326
- self ._yaxis_text1_transform = (
327
- self ._r_label1_position +
328
- Affine2D ().scale (1.0 / 360.0 , 1.0 ) +
329
- self ._yaxis_transform
330
- )
331
- self ._r_label2_position = ScaledTranslation (
332
- 22.5 , - self ._rpad ,
333
- blended_transform_factory (
334
- Affine2D (), BboxTransformToMaxOnly (self .viewLim )))
335
- self ._yaxis_text2_transform = (
336
- self ._r_label2_position +
321
+ self ._r_label_position = ScaledTranslation (
322
+ 22.5 , 0.0 , Affine2D ())
323
+ self ._yaxis_text_transform = (
324
+ self ._r_label_position +
337
325
Affine2D ().scale (1.0 / 360.0 , 1.0 ) +
338
326
self ._yaxis_transform
339
327
)
@@ -353,10 +341,26 @@ def get_yaxis_transform(self,which='grid'):
353
341
return self ._yaxis_transform
354
342
355
343
def get_yaxis_text1_transform (self , pad ):
356
- return self ._yaxis_text1_transform , 'center' , 'center'
344
+ angle = self ._r_label_position .to_values ()[4 ]
345
+ if angle < 90. :
346
+ return self ._yaxis_text_transform , 'bottom' , 'left'
347
+ elif angle < 180. :
348
+ return self ._yaxis_text_transform , 'bottom' , 'right'
349
+ elif angle < 270. :
350
+ return self ._yaxis_text_transform , 'top' , 'right'
351
+ else :
352
+ return self ._yaxis_text_transform , 'top' , 'left'
357
353
358
354
def get_yaxis_text2_transform (self , pad ):
359
- return self ._yaxis_text2_transform , 'center' , 'center'
355
+ angle = self ._r_label_position .to_values ()[4 ]
356
+ if angle < 90. :
357
+ return self ._yaxis_text_transform , 'top' , 'right'
358
+ elif angle < 180. :
359
+ return self ._yaxis_text_transform , 'top' , 'left'
360
+ elif angle < 270. :
361
+ return self ._yaxis_text_transform , 'bottom' , 'left'
362
+ else :
363
+ return self ._yaxis_text_transform , 'bottom' , 'right'
360
364
361
365
def _gen_axes_patch (self ):
362
366
return Circle ((0.5 , 0.5 ), 0.5 )
@@ -406,7 +410,7 @@ def set_theta_zero_location(self, loc):
406
410
'E' : 0 ,
407
411
'NE' : np .pi * 0.25 }
408
412
return self .set_theta_offset (mapping [loc ])
409
-
413
+
410
414
def set_theta_direction (self , direction ):
411
415
"""
412
416
Set the direction in which theta increases.
@@ -437,7 +441,7 @@ def get_theta_direction(self):
437
441
Theta increases in the counterclockwise direction
438
442
"""
439
443
return self ._direction
440
-
444
+
441
445
def set_rlim (self , * args , ** kwargs ):
442
446
if 'rmin' in kwargs :
443
447
kwargs ['ymin' ] = kwargs .pop ('rmin' )
@@ -494,7 +498,7 @@ def set_thetagrids(self, angles, labels=None, frac=None, fmt=None,
494
498
return self .xaxis .get_ticklines (), self .xaxis .get_ticklabels ()
495
499
496
500
@docstring .dedent_interpd
497
- def set_rgrids (self , radii , labels = None , angle = None , rpad = None , fmt = None ,
501
+ def set_rgrids (self , radii , labels = None , angle = None , fmt = None ,
498
502
** kwargs ):
499
503
"""
500
504
Set the radial locations and labels of the *r* grids.
@@ -507,9 +511,6 @@ def set_rgrids(self, radii, labels=None, angle=None, rpad=None, fmt=None,
507
511
508
512
If *labels* is None, the built-in formatter will be used.
509
513
510
- *rpad* is a fraction of the max of *radii* which will pad each of
511
- the radial labels in the radial direction.
512
-
513
514
Return value is a list of tuples (*line*, *label*), where
514
515
*line* is :class:`~matplotlib.lines.Line2D` instances and the
515
516
*label* is :class:`~matplotlib.text.Text` instances.
@@ -531,13 +532,9 @@ def set_rgrids(self, radii, labels=None, angle=None, rpad=None, fmt=None,
531
532
elif fmt is not None :
532
533
self .yaxis .set_major_formatter (FormatStrFormatter (fmt ))
533
534
if angle is None :
534
- angle = self ._r_label1_position .to_values ()[4 ]
535
- if rpad is not None :
536
- self ._rpad = rpad
537
- self ._r_label1_position ._t = (angle , self ._rpad )
538
- self ._r_label1_position .invalidate ()
539
- self ._r_label2_position ._t = (angle , - self ._rpad )
540
- self ._r_label2_position .invalidate ()
535
+ angle = self ._r_label_position .to_values ()[4 ]
536
+ self ._r_label_position ._t = (angle , 0.0 )
537
+ self ._r_label_position .invalidate ()
541
538
for t in self .yaxis .get_ticklabels ():
542
539
t .update (kwargs )
543
540
return self .yaxis .get_gridlines (), self .yaxis .get_ticklabels ()
@@ -589,7 +586,7 @@ def can_pan(self) :
589
586
return True
590
587
591
588
def start_pan (self , x , y , button ):
592
- angle = self ._r_label1_position .to_values ()[4 ] / 180.0 * np . pi
589
+ angle = np . deg2rad ( self ._r_label_position .to_values ()[4 ])
593
590
mode = ''
594
591
if button == 1 :
595
592
epsilon = np .pi / 45.0
@@ -603,7 +600,7 @@ def start_pan(self, x, y, button):
603
600
rmax = self .get_rmax (),
604
601
trans = self .transData .frozen (),
605
602
trans_inverse = self .transData .inverted ().frozen (),
606
- r_label_angle = self ._r_label1_position .to_values ()[4 ],
603
+ r_label_angle = self ._r_label_position .to_values ()[4 ],
607
604
x = x ,
608
605
y = y ,
609
606
mode = mode
@@ -628,11 +625,16 @@ def drag_pan(self, button, key, x, y):
628
625
dt = dt0 * - 1.0
629
626
dt = (dt / np .pi ) * 180.0
630
627
631
- rpad = self ._rpad
632
- self ._r_label1_position ._t = (p .r_label_angle - dt , rpad )
633
- self ._r_label1_position .invalidate ()
634
- self ._r_label2_position ._t = (p .r_label_angle - dt , - rpad )
635
- self ._r_label2_position .invalidate ()
628
+ self ._r_label_position ._t = (p .r_label_angle - dt , 0.0 )
629
+ self ._r_label_position .invalidate ()
630
+
631
+ trans , vert1 , horiz1 = self .get_yaxis_text1_transform (0.0 )
632
+ trans , vert2 , horiz2 = self .get_yaxis_text2_transform (0.0 )
633
+ for t in self .yaxis .majorTicks + self .yaxis .minorTicks :
634
+ t .label1 .set_va (vert1 )
635
+ t .label1 .set_ha (horiz1 )
636
+ t .label2 .set_va (vert2 )
637
+ t .label2 .set_ha (horiz2 )
636
638
637
639
elif p .mode == 'zoom' :
638
640
startt , startr = p .trans_inverse .transform_point ((p .x , p .y ))
0 commit comments