![](/img/trans.png)
[英]Combining a line from plot to marks from errorbar in matplotlib legend
[英]matplotlib errorbar continous line plot
我在使用带有matplotlib的错误栏时遇到了这个有趣的问题。 我有两个列表:“迭代”,它是一个范围从0到999的整数值的列表; 和“平均值”,这是1000个大小列表,带有真实的负值。
如果未指定“ yerr”属性,则会得到:
误差线(迭代次数,平均值)
但是,如果我指定yerr属性但设置为0,则会得到以下信息:
误差线(迭代次数,平均值,yerr = 0)
在我看来,两张图片应该相同,但是第二张图片是由小的水平线组成的,而第一张图片似乎是连续的。
当我将数组作为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.