@@ -23,37 +23,39 @@ def get_point_of_rotated_vertical(origin, line_length, degrees):
23
23
origin [1 ] + line_length * np .cos (rad )]
24
24
25
25
26
- fig , ax = plt .subplots (figsize = ( 8 , 7 ) )
27
- ax .set (xlim = (0 , 6 ), ylim = (- 1 , 4 ))
26
+ fig , ax = plt .subplots ()
27
+ ax .set (xlim = (0 , 6 ), ylim = (- 1 , 5 ))
28
28
ax .set_title ("Orientation of the bracket arrows relative to angleA and angleB" )
29
29
30
- for i , style in enumerate (["]-[" , "|-|" ]):
31
- for j , angle in enumerate ([- 40 , 60 ]):
32
- y = 2 * i + j
33
- arrow_centers = ((1 , y ), (5 , y ))
34
- vlines = ((1 , y + 0.5 ), (5 , y + 0.5 ))
35
- anglesAB = (angle , - angle )
36
- bracketstyle = f"{ style } , angleA={ anglesAB [0 ]} , angleB={ anglesAB [1 ]} "
37
- bracket = FancyArrowPatch (* arrow_centers , arrowstyle = bracketstyle ,
38
- mutation_scale = 42 )
39
- ax .add_patch (bracket )
40
- ax .text (3 , y + 0.05 , bracketstyle , ha = "center" , va = "bottom" )
41
- ax .vlines ([i [0 ] for i in vlines ], [y , y ], [i [1 ] for i in vlines ],
42
- linestyles = "--" , color = "C0" )
43
- # Get the top coordinates for the drawn patches at A and B
44
- patch_tops = [get_point_of_rotated_vertical (center , 0.5 , angle )
45
- for center , angle in zip (arrow_centers , anglesAB )]
46
- # Define the connection directions for the annotation arrows
47
- connection_dirs = (1 , - 1 ) if angle > 0 else (- 1 , 1 )
48
- # Add arrows and annotation text
49
- arrowstyle = "Simple, tail_width=0.5, head_width=4, head_length=8"
50
- for vline , dir , patch_top , angle in zip (vlines , connection_dirs ,
51
- patch_tops , anglesAB ):
52
- kw = dict (connectionstyle = f"arc3,rad={ dir * 0.5 } " ,
53
- arrowstyle = arrowstyle , color = "C0" )
54
- ax .add_patch (FancyArrowPatch (vline , patch_top , ** kw ))
55
- ax .text (vline [0 ] - dir * 0.15 , y + 0.3 , f'{ angle } °' , ha = "center" ,
56
- va = "center" )
30
+ style = ']-['
31
+ for i , angle in enumerate ([- 40 , 0 , 60 ]):
32
+ y = 2 * i
33
+ arrow_centers = ((1 , y ), (5 , y ))
34
+ vlines = ((1 , y + 0.5 ), (5 , y + 0.5 ))
35
+ anglesAB = (angle , - angle )
36
+ bracketstyle = f"{ style } , angleA={ anglesAB [0 ]} , angleB={ anglesAB [1 ]} "
37
+ bracket = FancyArrowPatch (* arrow_centers , arrowstyle = bracketstyle ,
38
+ mutation_scale = 42 )
39
+ ax .add_patch (bracket )
40
+ ax .text (3 , y + 0.05 , bracketstyle , ha = "center" , va = "bottom" , fontsize = 14 )
41
+ ax .vlines ([line [0 ] for line in vlines ], [y , y ], [line [1 ] for line in vlines ],
42
+ linestyles = "--" , color = "C0" )
43
+ # Get the top coordinates for the drawn patches at A and B
44
+ patch_tops = [get_point_of_rotated_vertical (center , 0.5 , angle )
45
+ for center , angle in zip (arrow_centers , anglesAB )]
46
+ # Define the connection directions for the annotation arrows
47
+ connection_dirs = (1 , - 1 ) if angle > 0 else (- 1 , 1 )
48
+ # Add arrows and annotation text
49
+ arrowstyle = "Simple, tail_width=0.5, head_width=4, head_length=8"
50
+ for vline , dir , patch_top , angle in zip (vlines , connection_dirs ,
51
+ patch_tops , anglesAB ):
52
+ kw = dict (connectionstyle = f"arc3,rad={ dir * 0.5 } " ,
53
+ arrowstyle = arrowstyle , color = "C0" )
54
+ ax .add_patch (FancyArrowPatch (vline , patch_top , ** kw ))
55
+ ax .text (vline [0 ] - dir * 0.15 , y + 0.7 , f'{ angle } °' , ha = "center" ,
56
+ va = "center" )
57
+
58
+ plt .show ()
57
59
58
60
# %%
59
61
#
0 commit comments