@@ -23,37 +23,39 @@ def get_point_of_rotated_vertical(origin, line_length, degrees):
2323 origin [1 ] + line_length * np .cos (rad )]
2424
2525
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 ))
2828ax .set_title ("Orientation of the bracket arrows relative to angleA and angleB" )
2929
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 ()
5759
5860# %%
5961#
0 commit comments