如何在matplotlib中设置错误条上限的线宽?

Eri*_*got 38 python matplotlib

如何更改Matplotlib中错误条上限的线宽?

我尝试了以下代码:

(_, caplines, _) = matplotlib.pyplot.errorbar(
    data['distance'], data['energy'], yerr=data['energy sigma'],
    capsize=10, elinewidth=3)

for capline in caplines:
    capline.set_linewidth(10)
    capline.set_color('red')

pp.draw()
Run Code Online (Sandbox Code Playgroud)

不幸的是,这将更新瓶盖的颜色,但并没有更新线宽盖的!

结果效果类似于下图中的"胖错误条线/薄帽": 在此输入图像描述

在这种情况下,有"胖"酒吧帽是很好的; 怎么能在Matplotlib中完成?逐个"手动"绘制条形帽plot()可以工作,但更简单的替代方案是最好的.

joa*_*uin 32

EOL,你很亲密..,

distance = [1,3,7,9]
energy = [10,20,30,40]
sigma = [1,3,2,5]

(_, caps, _) = plt.errorbar(distance, energy, sigma, capsize=20, elinewidth=3)

for cap in caps:
    cap.set_color('red')
    cap.set_markeredgewidth(10)

plt.show
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

set_markeredgewidth 设置帽线的宽度.

Matplotlib对象具有如此多的属性,通常很难记住给定对象的正确属性.IPython是一个非常有用的工具,用于内省matplotlib.我用它来分析与错误上限线相对应的二维线的属性,我发现了它和其他标记属性.

干杯


Joh*_*ohn 17

这是基于@ joaquin的答案,但更简洁一点(如果你只想要没有特殊样式的简单错误上限):

distance = [1,3,7,9]
energy = [10,20,30,40]
sigma = [1,3,2,5]

plt.errorbar(distance, 
    energy, 
    sigma, 
    capsize=5, 
    elinewidth=2,
    markeredgewidth=2)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述