Matplotlib设置barh误差棒capstyle为round不生效如何解决?
问题原因
- 你在
error_kw中设置solid_capstyle不生效的核心原因是:该参数仅作用于误差棒的主线段,误差棒两端的帽檐是独立的Line2D对象,不会继承这个配置。 - 你后续修改
bars.errorbar.lines[1][0]的操作指向的是误差棒的主线段对象,并非帽端线段,所以也不会生效,误差棒的帽端全部存储在bars.errorbar.caplines属性中。
解决方法
直接遍历所有帽端线段设置圆角样式即可,参考代码如下:
import matplotlib.pyplot as plt fig, ax = plt.subplots() 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}) # 给所有误差棒帽端设置圆角样式 for cap in bars.errorbar.caplines: cap.set_solid_capstyle('round') plt.show()
如果需要统一全局的误差棒帽端样式,也可以在绘图前全局配置:
import matplotlib as mpl mpl.rcParams['lines.solid_capstyle'] = 'round'
内容的提问来源于stack exchange,提问作者Der Hahn
相关产品推荐
相关产品推荐

