繁体   English   中英

matplotlib errorbar连续线图

[英]matplotlib errorbar continous line plot

我在使用带有matplotlib的错误栏时遇到了这个有趣的问题。 我有两个列表:“迭代”,它是一个范围从0到999的整数值的列表; 和“平均值”,这是1000个大小列表,带有真实的负值。

如果未指定“ yerr”属性,则会得到:

误差线(迭代次数,平均值)

img1

但是,如果我指定yerr属性但设置为0,则会得到以下信息:

误差线(迭代次数,平均值,yerr = 0)

img2

在我看来,两张图片应该相同,但是第二张图片是由小的水平线组成的,而第一张图片似乎是连续的。

当我将数组作为yerr传递时,问题就来了(大小:1000,所有值都设置为0,除了一些实际的std-error值(其中index%50 == 0,以便不使图像过于拥挤))。

误差线(迭代次数,平均值,yerr = stderr)

我想得到一张主线是连续的图像(就像第一幅图像一样),但是我却得到了一个凌乱的图像,就像第二幅图像一样。 我已经尝试了很多事情,例如修改线型参数,但仍然不断获得类似第一张图片的信息(每隔50步的时间间隔带有误差条)

难道我做错了什么? 有可能做我想做的事。

更新1

正如David在评论中所说,出现水平线是因为stderr的默认形状为0。我认为值为0不会显示任何误差线。 因此,我只需要避免在将其设置为0的地方绘制误差线(误差线仅在50、100、150、200、250 ... 1000中)。

更新2(和解决)

David在此处添加了解决方案:

# plot all points without error bars
plot(iterations, average)
# plot errorbars for every 50th point
errorbar(iterations[::50], average[::50], yerr=stderr[::50], linestyle='None')

我只是添加linestyle ='None'以避免在每个yerr条之间绘制线。

非常感谢!

好吧,您要求提供错误栏,并且得到了它们。 相反,如果未在参数列表中指定yerr ,则错误栏文档指出“如果yerr不为None,则绘制垂直错误栏 ”。

我不理解使用errorbar并设置yerr=0的目的,但是yerr=0错误栏显示为水平小线,这是因为垂直延伸为零的错误栏的样式。

如果要指示许多数据点的错误,最好使用阴影背景指示错误区域。 这可以通过fill_between函数来实现

编辑:在注释中使用提炼的问题,绘图代码可以是

# plot all points without error bars
plot(iterations, average)
# plot errorbars for every 50th point
errorbar(iterations[::50], average[::50], yerr=error[::50])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM