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 fa24348

Browse filesBrowse files
authored
Merge pull request #23055 from anntzer/annotationupdateposition
Cleanup Annotation.update_position.
2 parents 52b122e + 6257f60 commit fa24348
Copy full SHA for fa24348

File tree

Expand file treeCollapse file tree

1 file changed

+29
-35
lines changed
Filter options
Expand file treeCollapse file tree

1 file changed

+29
-35
lines changed

‎lib/matplotlib/text.py

Copy file name to clipboardExpand all lines: lib/matplotlib/text.py
+29-35Lines changed: 29 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1906,32 +1906,30 @@ def update_positions(self, renderer):
19061906
"""
19071907
Update the pixel positions of the annotation text and the arrow patch.
19081908
"""
1909-
x1, y1 = self._get_position_xy(renderer) # Annotated position.
1910-
# generate transformation,
1909+
# generate transformation
19111910
self.set_transform(self._get_xy_transform(renderer, self.anncoords))
19121911

1913-
if self.arrowprops is None:
1912+
arrowprops = self.arrowprops
1913+
if arrowprops is None:
19141914
return
19151915

19161916
bbox = Text.get_window_extent(self, renderer)
19171917

1918-
d = self.arrowprops.copy()
1919-
ms = d.pop("mutation_scale", self.get_size())
1918+
arrow_end = x1, y1 = self._get_position_xy(renderer) # Annotated pos.
1919+
1920+
ms = arrowprops.get("mutation_scale", self.get_size())
19201921
self.arrow_patch.set_mutation_scale(ms)
19211922

1922-
if "arrowstyle" not in d:
1923+
if "arrowstyle" not in arrowprops:
19231924
# Approximately simulate the YAArrow.
1924-
# Pop its kwargs:
1925-
shrink = d.pop('shrink', 0.0)
1926-
width = d.pop('width', 4)
1927-
headwidth = d.pop('headwidth', 12)
1928-
# Ignore frac--it is useless.
1929-
frac = d.pop('frac', None)
1930-
if frac is not None:
1925+
shrink = arrowprops.get('shrink', 0.0)
1926+
width = arrowprops.get('width', 4)
1927+
headwidth = arrowprops.get('headwidth', 12)
1928+
if 'frac' in arrowprops:
19311929
_api.warn_external(
19321930
"'frac' option in 'arrowprops' is no longer supported;"
19331931
" use 'headlength' to set the head length in points.")
1934-
headlength = d.pop('headlength', 12)
1932+
headlength = arrowprops.get('headlength', 12)
19351933

19361934
# NB: ms is in pts
19371935
stylekw = dict(head_length=headlength / ms,
@@ -1953,29 +1951,25 @@ def update_positions(self, renderer):
19531951

19541952
# adjust the starting point of the arrow relative to the textbox.
19551953
# TODO : Rotation needs to be accounted.
1956-
relposx, relposy = self._arrow_relpos
1957-
x0 = bbox.x0 + bbox.width * relposx
1958-
y0 = bbox.y0 + bbox.height * relposy
1959-
1960-
# The arrow will be drawn from (x0, y0) to (x1, y1). It will be first
1954+
arrow_begin = bbox.p0 + bbox.size * self._arrow_relpos
1955+
# The arrow is drawn from arrow_begin to arrow_end. It will be first
19611956
# clipped by patchA and patchB. Then it will be shrunk by shrinkA and
1962-
# shrinkB (in points). If patch A is not set, self.bbox_patch is used.
1963-
self.arrow_patch.set_positions((x0, y0), (x1, y1))
1964-
1965-
if "patchA" in d:
1966-
self.arrow_patch.set_patchA(d.pop("patchA"))
1957+
# shrinkB (in points). If patchA is not set, self.bbox_patch is used.
1958+
self.arrow_patch.set_positions(arrow_begin, arrow_end)
1959+
1960+
if "patchA" in arrowprops:
1961+
patchA = arrowprops["patchA"]
1962+
elif self._bbox_patch:
1963+
patchA = self._bbox_patch
1964+
elif self.get_text() == "":
1965+
patchA = None
19671966
else:
1968-
if self._bbox_patch:
1969-
self.arrow_patch.set_patchA(self._bbox_patch)
1970-
else:
1971-
if self.get_text() == "":
1972-
self.arrow_patch.set_patchA(None)
1973-
return
1974-
pad = renderer.points_to_pixels(4)
1975-
r = Rectangle(xy=(bbox.x0 - pad / 2, bbox.y0 - pad / 2),
1976-
width=bbox.width + pad, height=bbox.height + pad,
1977-
transform=IdentityTransform(), clip_on=False)
1978-
self.arrow_patch.set_patchA(r)
1967+
pad = renderer.points_to_pixels(4)
1968+
patchA = Rectangle(
1969+
xy=(bbox.x0 - pad / 2, bbox.y0 - pad / 2),
1970+
width=bbox.width + pad, height=bbox.height + pad,
1971+
transform=IdentityTransform(), clip_on=False)
1972+
self.arrow_patch.set_patchA(patchA)
19791973

19801974
@artist.allow_rasterization
19811975
def draw(self, renderer):

0 commit comments

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