散点图误差棒(每个点的误差都是独特的)

52

我试图制作一个散点图,我有两个数组,还有第三个数组包含每个点的绝对误差(y 方向上的误差)。我想要误差条在 (点 a - a 的误差) 和 (点 a + a 的误差) 之间。是否有一种通过 pylab 实现这个目标的方法?如果没有,您有任何其他想法吗?

2个回答

71

这个答案与其他答案几乎相同,但您根本不需要使用scatter图,您只需为errorbar指定类似于散点图的格式(fmt参数)即可:

import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
e = [0.5, 1., 1.5, 2.]
plt.errorbar(x, y, yerr=e, fmt='o')
plt.show()

结果:

enter image description here

可以在 plot 文档中找到可用的 fmt 参数列表。
character   description
'-'     solid line style
'--'    dashed line style
'-.'    dash-dot line style
':'     dotted line style
'.'     point marker
','     pixel marker
'o'     circle marker
'v'     triangle_down marker
'^'     triangle_up marker
'<'     triangle_left marker
'>'     triangle_right marker
'1'     tri_down marker
'2'     tri_up marker
'3'     tri_left marker
'4'     tri_right marker
's'     square marker
'p'     pentagon marker
'*'     star marker
'h'     hexagon1 marker
'H'     hexagon2 marker
'+'     plus marker
'x'     x marker
'D'     diamond marker
'd'     thin_diamond marker
'|'     vline marker
'_'     hline marker

32
>>> import matplotlib.pyplot as plt
>>> a = [1,3,5,7]
>>> b = [11,-2,4,19]
>>> plt.pyplot.scatter(a,b)
>>> plt.scatter(a,b)
<matplotlib.collections.PathCollection object at 0x00000000057E2CF8>
>>> plt.show()
>>> c = [1,3,2,1]
>>> plt.errorbar(a,b,yerr=c, linestyle="None")
<Container object of 3 artists>
>>> plt.show()

a是您的x数据 b是您的y数据 如果有误差,c就是您的y误差

请注意,c已经包含了每个方向上的误差


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接