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

Skip to content

Commit 11c6af2

Browse files
jklymakmeeseeksmachine
authored andcommitted
Backport PR #25372: Clean up Curve ArrowStyle docs
1 parent 4fcd0a0 commit 11c6af2

File tree

2 files changed

+42
-51
lines changed

2 files changed

+42
-51
lines changed

examples/text_labels_and_annotations/angles_on_bracket_arrows.py

Lines changed: 31 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -22,37 +22,39 @@ def get_point_of_rotated_vertical(origin, line_length, degrees):
2222
origin[1] + line_length * np.cos(rad)]
2323

2424

25-
fig, ax = plt.subplots(figsize=(8, 7))
26-
ax.set(xlim=(0, 6), ylim=(-1, 4))
25+
fig, ax = plt.subplots()
26+
ax.set(xlim=(0, 6), ylim=(-1, 5))
2727
ax.set_title("Orientation of the bracket arrows relative to angleA and angleB")
2828

29-
for i, style in enumerate(["]-[", "|-|"]):
30-
for j, angle in enumerate([-40, 60]):
31-
y = 2*i + j
32-
arrow_centers = ((1, y), (5, y))
33-
vlines = ((1, y + 0.5), (5, y + 0.5))
34-
anglesAB = (angle, -angle)
35-
bracketstyle = f"{style}, angleA={anglesAB[0]}, angleB={anglesAB[1]}"
36-
bracket = FancyArrowPatch(*arrow_centers, arrowstyle=bracketstyle,
37-
mutation_scale=42)
38-
ax.add_patch(bracket)
39-
ax.text(3, y + 0.05, bracketstyle, ha="center", va="bottom")
40-
ax.vlines([i[0] for i in vlines], [y, y], [i[1] for i in vlines],
41-
linestyles="--", color="C0")
42-
# Get the top coordinates for the drawn patches at A and B
43-
patch_tops = [get_point_of_rotated_vertical(center, 0.5, angle)
44-
for center, angle in zip(arrow_centers, anglesAB)]
45-
# Define the connection directions for the annotation arrows
46-
connection_dirs = (1, -1) if angle > 0 else (-1, 1)
47-
# Add arrows and annotation text
48-
arrowstyle = "Simple, tail_width=0.5, head_width=4, head_length=8"
49-
for vline, dir, patch_top, angle in zip(vlines, connection_dirs,
50-
patch_tops, anglesAB):
51-
kw = dict(connectionstyle=f"arc3,rad={dir * 0.5}",
52-
arrowstyle=arrowstyle, color="C0")
53-
ax.add_patch(FancyArrowPatch(vline, patch_top, **kw))
54-
ax.text(vline[0] - dir * 0.15, y + 0.3, f'{angle}°', ha="center",
55-
va="center")
29+
style = ']-['
30+
for i, angle in enumerate([-40, 0, 60]):
31+
y = 2*i
32+
arrow_centers = ((1, y), (5, y))
33+
vlines = ((1, y + 0.5), (5, y + 0.5))
34+
anglesAB = (angle, -angle)
35+
bracketstyle = f"{style}, angleA={anglesAB[0]}, angleB={anglesAB[1]}"
36+
bracket = FancyArrowPatch(*arrow_centers, arrowstyle=bracketstyle,
37+
mutation_scale=42)
38+
ax.add_patch(bracket)
39+
ax.text(3, y + 0.05, bracketstyle, ha="center", va="bottom", fontsize=14)
40+
ax.vlines([line[0] for line in vlines], [y, y], [line[1] for line in vlines],
41+
linestyles="--", color="C0")
42+
# Get the top coordinates for the drawn patches at A and B
43+
patch_tops = [get_point_of_rotated_vertical(center, 0.5, angle)
44+
for center, angle in zip(arrow_centers, anglesAB)]
45+
# Define the connection directions for the annotation arrows
46+
connection_dirs = (1, -1) if angle > 0 else (-1, 1)
47+
# Add arrows and annotation text
48+
arrowstyle = "Simple, tail_width=0.5, head_width=4, head_length=8"
49+
for vline, dir, patch_top, angle in zip(vlines, connection_dirs,
50+
patch_tops, anglesAB):
51+
kw = dict(connectionstyle=f"arc3,rad={dir * 0.5}",
52+
arrowstyle=arrowstyle, color="C0")
53+
ax.add_patch(FancyArrowPatch(vline, patch_top, **kw))
54+
ax.text(vline[0] - dir * 0.15, y + 0.7, f'{angle}°', ha="center",
55+
va="center")
56+
57+
plt.show()
5658

5759
#############################################################################
5860
#

lib/matplotlib/patches.py

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3196,29 +3196,18 @@ def __init__(self, head_length=.4, head_width=.2, widthA=1., widthB=1.,
31963196
Parameters
31973197
----------
31983198
head_length : float, default: 0.4
3199-
Length of the arrow head, relative to *mutation_scale*.
3199+
Length of the arrow head, relative to *mutation_size*.
32003200
head_width : float, default: 0.2
3201-
Width of the arrow head, relative to *mutation_scale*.
3202-
widthA : float, default: 1.0
3203-
Width of the bracket at the beginning of the arrow
3204-
widthB : float, default: 1.0
3205-
Width of the bracket at the end of the arrow
3206-
lengthA : float, default: 0.2
3207-
Length of the bracket at the beginning of the arrow
3208-
lengthB : float, default: 0.2
3209-
Length of the bracket at the end of the arrow
3210-
angleA : float, default 0
3211-
Orientation of the bracket at the beginning, as a
3212-
counterclockwise angle. 0 degrees means perpendicular
3213-
to the line.
3214-
angleB : float, default 0
3215-
Orientation of the bracket at the beginning, as a
3216-
counterclockwise angle. 0 degrees means perpendicular
3217-
to the line.
3218-
scaleA : float, default *mutation_size*
3219-
The mutation_size for the beginning bracket
3220-
scaleB : float, default *mutation_size*
3221-
The mutation_size for the end bracket
3201+
Width of the arrow head, relative to *mutation_size*.
3202+
widthA, widthB : float, default: 1.0
3203+
Width of the bracket.
3204+
lengthA, lengthB : float, default: 0.2
3205+
Length of the bracket.
3206+
angleA, angleB : float, default: 0
3207+
Orientation of the bracket, as a counterclockwise angle.
3208+
0 degrees means perpendicular to the line.
3209+
scaleA, scaleB : float, default: *mutation_size*
3210+
The scale of the brackets.
32223211
"""
32233212

32243213
self.head_length, self.head_width = head_length, head_width

0 commit comments

Comments
 (0)