@@ -3522,10 +3522,11 @@ def _upcast_err(err):
35223522 eb_cap_style ['color' ] = ecolor
35233523
35243524 barcols = []
3525- caplines = []
3525+ caplines = { 'x' : [], 'y' : []}
35263526
35273527 # Vectorized fancy-indexer.
3528- def apply_mask (arrays , mask ): return [array [mask ] for array in arrays ]
3528+ def apply_mask (arrays , mask ):
3529+ return [array [mask ] for array in arrays ]
35293530
35303531 # dep: dependent dataset, indep: independent dataset
35313532 for (dep_axis , dep , err , lolims , uplims , indep , lines_func ,
@@ -3571,7 +3572,7 @@ def apply_mask(arrays, mask): return [array[mask] for array in arrays]
35713572 line = mlines .Line2D (indep_masked , indep_masked ,
35723573 marker = marker , ** eb_cap_style )
35733574 line .set (** {f"{ dep_axis } data" : lh_masked })
3574- caplines .append (line )
3575+ caplines [ dep_axis ] .append (line )
35753576 for idx , (lims , hl ) in enumerate ([(lolims , high ), (uplims , low )]):
35763577 if not lims .any ():
35773578 continue
@@ -3585,15 +3586,36 @@ def apply_mask(arrays, mask): return [array[mask] for array in arrays]
35853586 line = mlines .Line2D (x_masked , y_masked ,
35863587 marker = hlmarker , ** eb_cap_style )
35873588 line .set (** {f"{ dep_axis } data" : hl_masked })
3588- caplines .append (line )
3589+ caplines [ dep_axis ] .append (line )
35893590 if capsize > 0 :
3590- caplines .append (mlines .Line2D (
3591+ caplines [ dep_axis ] .append (mlines .Line2D (
35913592 x_masked , y_masked , marker = marker , ** eb_cap_style ))
3592-
3593- for l in caplines :
3594- self .add_line (l )
3593+ if self .name == 'polar' :
3594+ for axis in caplines :
3595+ if not caplines [axis ]:
3596+ continue
3597+ lo , hi = caplines [axis ]
3598+ for (lo_theta , lo_r ,
3599+ hi_theta , hi_r ) in zip (
3600+ lo .get_xdata (), lo .get_ydata (),
3601+ hi .get_xdata (), hi .get_ydata ()):
3602+ # Rotate caps to be perpendicular to the error bars
3603+ rotation = (lo_theta + hi_theta )/ 2
3604+ if axis == 'x' :
3605+ rotation += np .pi / 2
3606+ ms = mmarkers .MarkerStyle (marker = marker )
3607+ ms ._transform = mtransforms .Affine2D ().rotate (rotation )
3608+ self .add_line (mlines .Line2D ([lo_theta ], [lo_r ],
3609+ marker = ms , ** eb_cap_style ))
3610+ self .add_line (mlines .Line2D ([hi_theta ], [hi_r ],
3611+ marker = ms , ** eb_cap_style ))
3612+ else :
3613+ for axis in caplines :
3614+ for l in caplines [axis ]:
3615+ self .add_line (l )
35953616
35963617 self ._request_autoscale_view ()
3618+ caplines = caplines ['x' ] + caplines ['y' ]
35973619 errorbar_container = ErrorbarContainer (
35983620 (data_line , tuple (caplines ), tuple (barcols )),
35993621 has_xerr = (xerr is not None ), has_yerr = (yerr is not None ),
0 commit comments