Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit fa24348

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

File tree

1 file changed

+29
-35
lines changed

1 file changed

+29
-35
lines changed

lib/matplotlib/text.py

Lines 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)