matplotlib的上限/下限

Py-*_*ser 9 python matplotlib

我想用错误栏绘制一些数据点.其中一些数据点只有上限或下限,而不是误差条.

所以我试图使用索引来区分带有错误栏的点和带有上限/下限的点.但是,当我尝试这样的事情时:

errorbar(x[i], y[i], yerr = (ymin[i], ymax[i]))
Run Code Online (Sandbox Code Playgroud)

我收到错误:

ValueError: In safezip, len(args[0])=1 but len(args[1])=2
Run Code Online (Sandbox Code Playgroud)

这与此处的讨论类似,但我不使用熊猫,但是,对我来说,阅读其他几个关于它的话真的很有用.

无论如何,我试图通过以下方式"扭转"错误:

errorbar(x[i], y[i], yerr = [[ymin[i], ymax[i]]], uplims = True)
Run Code Online (Sandbox Code Playgroud)

但结果图不清楚:似乎将上限和误差标绘在一起,或者上限绘制两次......

目标是在上下误差条不对称时绘制上限/下限,因此我可以在箭头前选择上限/下限的条形长度.

cge*_*cge 8

这实际上是让我对错误栏感到烦恼的事情之一:它对输入的形状和维度非常挑剔.

我假设你想要"错误条",但希望它们的位置由绝对上限和下限设置,而不是由对称的"错误"值设置.

错误栏的作用是拉链(使用safezip)y数组和yerr [0]作为下限(yerr [1]表示上限).所以y和yerr [0](和[1])应该是具有相同大小,形状和维数的数组.yerr本身根本不需要是一个数组.

如果x,y,ymin和ymax都是一维数组,那么你拥有的第一个代码就可以工作了.听起来你的y不是.

但是,重要的是要注意,由于errorbar yerr是错误数量,而不是绝对限制,因此您需要从实际的下限和上限中加减y.

例如:

x = array([1,2,3,4])
y = array([1,2,3,4])  
ymin = array([0,1,2,3])
ymax = array([3,4,5,6])
ytop = ymax-y
ybot = y-ymin

# This works
errorbar( x, y, yerr=(ybot, ytop) )
Run Code Online (Sandbox Code Playgroud)

如果我误解了什么,请告诉我.如果您可以在您正在使用的表单中发布一些示例数据,那将是一件好事.