如何设置误差线帽的线宽

49 投票
2 回答
72598 浏览
提问于 2025-04-17 03:22

如何改变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()

可惜的是,这段代码只更新了帽子的颜色,但并没有改变帽子的线宽!

最终效果就像下面这张图片中的“粗误差条线/细帽子”一样:

在这里输入图片描述

如果帽子也能变得“粗一些”就好了;那么在Matplotlib中该怎么做呢?用plot()手动一个一个画帽子是可以的,但如果有更简单的方法就更好了。

2 个回答

41

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

在这里输入图片描述

set_markeredgewidth 用来设置标记边缘线的宽度。

Matplotlib 这个库里的对象有很多属性,很多时候我们很难记住每个对象的正确属性。IPython 是一个非常有用的工具,可以帮助我们查看 Matplotlib 的内容。我用它来分析与错误边缘线相关的 2D 线的属性,发现了这些和其他标记的属性。

干杯!

33

这段内容是基于@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)

在这里输入图片描述

撰写回答