Matplotlib barh capstyle 'round' not working?

565 Views Asked by At

I created a barh plot including xerr. For the caps of the errorbars I would like round edges. I tried to set the capstyle in the error_kw, which didn't work out.

bars = ax.barh(range(3), [1,2,3], 
        xerr=[0.5,0.4,0.3], 
        align='center', color='silver', height=0.5,
        capsize=12, error_kw={'elinewidth':1, 'solid_capstyle':'round'})

I also tried to access the Line2D objects afterwards to change the capstyle, which also didn't work out.

bars.errorbar.lines[1][0].set_solid_capstyle('round')

Can someone please give me a hint what I'm doing wrong here?

1

There are 1 best solutions below

0
On BEST ANSWER

I found the problem now, I had to access the private attribute of the cap. Instead of the method

cap.set_solid_capstyle('round')

I had to access the private attribute:

cap._marker._capstyle = "round"

Thanks for your comment anyway @tmdavison