@@ -502,10 +502,10 @@ def update_bbox_position_size(self, renderer):
502
502
503
503
x_box , y_box , w_box , h_box = _get_textbox (self , renderer )
504
504
self ._bbox_patch .set_bounds (0. , 0. , w_box , h_box )
505
- theta = np . deg2rad ( self .get_rotation ())
506
- tr = Affine2D (). rotate ( theta )
507
- tr = tr . translate ( posx + x_box , posy + y_box )
508
- self . _bbox_patch . set_transform ( tr )
505
+ self ._bbox_patch . set_transform (
506
+ Affine2D ()
507
+ . rotate_deg ( self . get_rotation () )
508
+ . translate ( posx + x_box , posy + y_box ) )
509
509
fontsize_in_pixel = renderer .points_to_pixels (self .get_size ())
510
510
self ._bbox_patch .set_mutation_scale (fontsize_in_pixel )
511
511
@@ -1481,11 +1481,12 @@ def _get_position_xy(self, renderer):
1481
1481
x , y = self .xy
1482
1482
return self ._get_xy (renderer , x , y , self .xycoords )
1483
1483
1484
- def _check_xy (self , renderer , xy_pixel ):
1484
+ def _check_xy (self , renderer ):
1485
1485
"""Check whether the annotation at *xy_pixel* should be drawn."""
1486
1486
b = self .get_annotation_clip ()
1487
1487
if b or (b is None and self .xycoords == "data" ):
1488
1488
# check if self.xy is inside the axes.
1489
+ xy_pixel = self ._get_position_xy (renderer )
1489
1490
return self .axes .contains_point (xy_pixel )
1490
1491
return True
1491
1492
@@ -1811,21 +1812,16 @@ def set_figure(self, fig):
1811
1812
Artist .set_figure (self , fig )
1812
1813
1813
1814
def update_positions (self , renderer ):
1814
- """Update the pixel positions of the annotated point and the text."""
1815
- xy_pixel = self ._get_position_xy (renderer )
1816
- self ._update_position_xytext (renderer , xy_pixel )
1817
-
1818
- def _update_position_xytext (self , renderer , xy_pixel ):
1819
1815
"""
1820
1816
Update the pixel positions of the annotation text and the arrow patch.
1821
1817
"""
1818
+ x1 , y1 = self ._get_position_xy (renderer ) # Annotated position.
1822
1819
# generate transformation,
1823
1820
self .set_transform (self ._get_xy_transform (renderer , self .anncoords ))
1824
1821
1825
1822
if self .arrowprops is None :
1826
1823
return
1827
1824
1828
- x1 , y1 = xy_pixel # Annotated position.
1829
1825
bbox = Text .get_window_extent (self , renderer )
1830
1826
1831
1827
d = self .arrowprops .copy ()
@@ -1893,24 +1889,16 @@ def _update_position_xytext(self, renderer, xy_pixel):
1893
1889
@artist .allow_rasterization
1894
1890
def draw (self , renderer ):
1895
1891
# docstring inherited
1896
-
1897
1892
if renderer is not None :
1898
1893
self ._renderer = renderer
1899
- if not self .get_visible ():
1900
- return
1901
-
1902
- xy_pixel = self ._get_position_xy (renderer )
1903
- if not self ._check_xy (renderer , xy_pixel ):
1894
+ if not self .get_visible () or not self ._check_xy (renderer ):
1904
1895
return
1905
-
1906
- self ._update_position_xytext (renderer , xy_pixel )
1896
+ self .update_positions (renderer )
1907
1897
self .update_bbox_position_size (renderer )
1908
-
1909
1898
if self .arrow_patch is not None : # FancyArrowPatch
1910
1899
if self .arrow_patch .figure is None and self .figure is not None :
1911
1900
self .arrow_patch .figure = self .figure
1912
1901
self .arrow_patch .draw (renderer )
1913
-
1914
1902
# Draw text, including FancyBboxPatch, after FancyArrowPatch.
1915
1903
# Otherwise, a wedge arrowstyle can land partly on top of the Bbox.
1916
1904
Text .draw (self , renderer )
0 commit comments