@@ -426,6 +426,30 @@ class ThetaAxis(maxis.XAxis):
426
426
axis_name = 'theta' #: Read-only name identifying the axis.
427
427
_tick_class = ThetaTick
428
428
429
+ def _update_label_position (self , renderer ):
430
+ """
431
+ Update the label position based on the bounding box enclosing
432
+ all the ticklabels and axis spine
433
+ """
434
+ if not self ._autolabelpos :
435
+ return
436
+
437
+ # get bounding boxes for this axis and any siblings
438
+ # that have been set by `fig.align_xlabels()`
439
+ xbboxes , xbboxes2 = self ._get_tick_boxes_siblings (renderer = renderer )
440
+ ybboxes , ybboxes2 = self .axes .yaxis ._get_tick_boxes_siblings (renderer = renderer )
441
+ # Union with extents of the bottom spine if present, of the axes otherwise.
442
+ bbox = mtransforms .Bbox .union ([
443
+ * xbboxes , * xbboxes2 , * ybboxes , * ybboxes2 ,
444
+ self .axes .spines .get (self .label_position , self .axes ).get_window_extent ()])
445
+
446
+ x , y = self .label .get_position ()
447
+ if self .label_position == 'bottom' :
448
+ y = bbox .y0 - self .labelpad * self .get_figure (root = True ).dpi / 72
449
+ else :
450
+ y = bbox .y1 + self .labelpad * self .get_figure (root = True ).dpi / 72
451
+ self .label .set_position ((x , y ))
452
+
429
453
def _wrap_locator_formatter (self ):
430
454
self .set_major_locator (ThetaLocator (self .get_major_locator ()))
431
455
self .set_major_formatter (ThetaFormatter ())
@@ -719,6 +743,30 @@ def __init__(self, *args, **kwargs):
719
743
super ().__init__ (* args , ** kwargs )
720
744
self .sticky_edges .y .append (0 )
721
745
746
+ def _update_label_position (self , renderer ):
747
+ """
748
+ Update the label position based on the bounding box enclosing
749
+ all the ticklabels and axis spine
750
+ """
751
+ if not self ._autolabelpos :
752
+ return
753
+
754
+ # get bounding boxes for this axis and any siblings
755
+ # that have been set by `fig.align_xlabels()`
756
+ xbboxes , xbboxes2 = self ._get_tick_boxes_siblings (renderer = renderer )
757
+ ybboxes , ybboxes2 = self .axes .xaxis ._get_tick_boxes_siblings (renderer = renderer )
758
+ # Union with extents of the linked spine if present, of the axes otherwise.
759
+ bbox = mtransforms .Bbox .union ([
760
+ * xbboxes , * xbboxes2 , * ybboxes , * ybboxes2 ,
761
+ self .axes .spines .get (self .label_position , self .axes ).get_window_extent ()])
762
+
763
+ x , y = self .label .get_position ()
764
+ if self .label_position == 'left' :
765
+ x = bbox .x0 - self .labelpad * self .get_figure (root = True ).dpi / 72
766
+ else :
767
+ x = bbox .x1 + self .labelpad * self .get_figure (root = True ).dpi / 72
768
+ self .label .set_position ((x , y ))
769
+
722
770
def _wrap_locator_formatter (self ):
723
771
self .set_major_locator (RadialLocator (self .get_major_locator (),
724
772
self .axes ))
0 commit comments