Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 95ada39

Browse filesBrowse files
authored
Merge pull request #17220 from anntzer/ann
Simplify Annotation and Text bbox drawing.
2 parents 9c89f7a + d79dfaa commit 95ada39
Copy full SHA for 95ada39

File tree

Expand file treeCollapse file tree

2 files changed

+12
-39
lines changed
Filter options
Expand file treeCollapse file tree

2 files changed

+12
-39
lines changed

‎lib/matplotlib/offsetbox.py

Copy file name to clipboardExpand all lines: lib/matplotlib/offsetbox.py
+3-18Lines changed: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1507,28 +1507,21 @@ def contains(self, mouseevent):
15071507
inside, info = self._default_contains(mouseevent)
15081508
if inside is not None:
15091509
return inside, info
1510-
1511-
xy_pixel = self._get_position_xy(None)
1512-
if not self._check_xy(None, xy_pixel):
1510+
if not self._check_xy(None):
15131511
return False, {}
1514-
1515-
t, tinfo = self.offsetbox.contains(mouseevent)
1512+
return self.offsetbox.contains(mouseevent)
15161513
#if self.arrow_patch is not None:
15171514
# a, ainfo=self.arrow_patch.contains(event)
15181515
# t = t or a
1519-
15201516
# self.arrow_patch is currently not checked as this can be a line - JJ
15211517

1522-
return t, tinfo
1523-
15241518
def get_children(self):
15251519
children = [self.offsetbox, self.patch]
15261520
if self.arrow_patch:
15271521
children.append(self.arrow_patch)
15281522
return children
15291523

15301524
def set_figure(self, fig):
1531-
15321525
if self.arrow_patch is not None:
15331526
self.arrow_patch.set_figure(fig)
15341527
self.offsetbox.set_figure(fig)
@@ -1623,23 +1616,15 @@ def _update_position_xybox(self, renderer, xy_pixel):
16231616

16241617
def draw(self, renderer):
16251618
# docstring inherited
1626-
16271619
if renderer is not None:
16281620
self._renderer = renderer
1629-
if not self.get_visible():
1621+
if not self.get_visible() or not self._check_xy(renderer):
16301622
return
1631-
1632-
xy_pixel = self._get_position_xy(renderer)
1633-
if not self._check_xy(renderer, xy_pixel):
1634-
return
1635-
16361623
self.update_positions(renderer)
1637-
16381624
if self.arrow_patch is not None:
16391625
if self.arrow_patch.figure is None and self.figure is not None:
16401626
self.arrow_patch.figure = self.figure
16411627
self.arrow_patch.draw(renderer)
1642-
16431628
self.patch.draw(renderer)
16441629
self.offsetbox.draw(renderer)
16451630
self.stale = False

‎lib/matplotlib/text.py

Copy file name to clipboardExpand all lines: lib/matplotlib/text.py
+9-21Lines changed: 9 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -502,10 +502,10 @@ def update_bbox_position_size(self, renderer):
502502

503503
x_box, y_box, w_box, h_box = _get_textbox(self, renderer)
504504
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))
509509
fontsize_in_pixel = renderer.points_to_pixels(self.get_size())
510510
self._bbox_patch.set_mutation_scale(fontsize_in_pixel)
511511

@@ -1481,11 +1481,12 @@ def _get_position_xy(self, renderer):
14811481
x, y = self.xy
14821482
return self._get_xy(renderer, x, y, self.xycoords)
14831483

1484-
def _check_xy(self, renderer, xy_pixel):
1484+
def _check_xy(self, renderer):
14851485
"""Check whether the annotation at *xy_pixel* should be drawn."""
14861486
b = self.get_annotation_clip()
14871487
if b or (b is None and self.xycoords == "data"):
14881488
# check if self.xy is inside the axes.
1489+
xy_pixel = self._get_position_xy(renderer)
14891490
return self.axes.contains_point(xy_pixel)
14901491
return True
14911492

@@ -1811,21 +1812,16 @@ def set_figure(self, fig):
18111812
Artist.set_figure(self, fig)
18121813

18131814
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):
18191815
"""
18201816
Update the pixel positions of the annotation text and the arrow patch.
18211817
"""
1818+
x1, y1 = self._get_position_xy(renderer) # Annotated position.
18221819
# generate transformation,
18231820
self.set_transform(self._get_xy_transform(renderer, self.anncoords))
18241821

18251822
if self.arrowprops is None:
18261823
return
18271824

1828-
x1, y1 = xy_pixel # Annotated position.
18291825
bbox = Text.get_window_extent(self, renderer)
18301826

18311827
d = self.arrowprops.copy()
@@ -1893,24 +1889,16 @@ def _update_position_xytext(self, renderer, xy_pixel):
18931889
@artist.allow_rasterization
18941890
def draw(self, renderer):
18951891
# docstring inherited
1896-
18971892
if renderer is not None:
18981893
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):
19041895
return
1905-
1906-
self._update_position_xytext(renderer, xy_pixel)
1896+
self.update_positions(renderer)
19071897
self.update_bbox_position_size(renderer)
1908-
19091898
if self.arrow_patch is not None: # FancyArrowPatch
19101899
if self.arrow_patch.figure is None and self.figure is not None:
19111900
self.arrow_patch.figure = self.figure
19121901
self.arrow_patch.draw(renderer)
1913-
19141902
# Draw text, including FancyBboxPatch, after FancyArrowPatch.
19151903
# Otherwise, a wedge arrowstyle can land partly on top of the Bbox.
19161904
Text.draw(self, renderer)

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.