Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 matplotlib.pyplot中的阴影不确定度/误差区域_Python 2.7_Matplotlib_Uncertainty - Fatal编程技术网

Python 2.7 matplotlib.pyplot中的阴影不确定度/误差区域

Python 2.7 matplotlib.pyplot中的阴影不确定度/误差区域,python-2.7,matplotlib,uncertainty,Python 2.7,Matplotlib,Uncertainty,我正在寻找一种在Python中绘制着色错误区域而不是错误条的方法 我知道有一种方法可以为y误差建立一个解决方案,但不包括x不确定性 有什么想法吗?不幸的是,我没有足够的声誉发表评论 提前谢谢 编辑 matplotlib.pyplot.fill\u betweenx()会导致如下结果: 编辑2 此外,我认为这对于一个完全不确定的区域是不正确的。下面我画了我认为是正确的形状-我希望,我在这里没有错 import numpy as np import matplotlib.pyplot as

我正在寻找一种在Python中绘制着色错误区域而不是错误条的方法

我知道有一种方法可以为y误差建立一个解决方案,但不包括x不确定性

有什么想法吗?不幸的是,我没有足够的声誉发表评论

提前谢谢


编辑

matplotlib.pyplot.fill\u betweenx()
会导致如下结果:


编辑2

此外,我认为这对于一个完全不确定的区域是不正确的。下面我画了我认为是正确的形状-我希望,我在这里没有错

import numpy as np
import matplotlib.pyplot as plt

x = np.asarray([1.0, 2.0, 3.0, 4.0])
y = np.asarray([1.0, 2.3, 3.0, 4.0])
xerr = np.asarray([0.1, 0.7, 0.1, 0.1])
yerr = np.asarray([0.1, 0.9, 1.2, 0.1])

plt.errorbar(x, y, yerr, xerr)

plt.fill_between(x, y-yerr, y+yerr, facecolor='#F0F8FF', alpha=1.0, edgecolor='none')
plt.fill_betweenx(y,x-xerr, x+xerr, facecolor='#F0F8FF', alpha=1.0, edgecolor='#8F94CC', linewidth=1, linestyle='dashed')

plt.show()
# Red lines added with inkscape.


我用
fill\u betweenx
函数实现了这一点:

import numpy as np
import matplotlib.pyplot as plt

x = np.asarray([1.0, 2.0, 3.0, 4.0, 5.0])
y = np.asarray([1.0, 2.0, 3.0, 4.0, 5.0])
xerr = np.asarray([0.2, 0.4, 0.6, 0.8, 1.0])
yerr = np.asarray([0.1, 0.2, 0.3, 0.4, 0.5])

plt.errorbar(x, y, yerr, xerr)

plt.fill_between(x, y-yerr, y+yerr,facecolor='r',alpha=0.5)
plt.fill_betweenx(y,x-xerr,x+xerr,facecolor='b',alpha=0.5)

plt.show()  
这导致了这幅图:


编辑

在您的具体示例中,使用以下内容就足够了:

plt.fill_between(x, y-yerr, y+yerr,facecolor='#F0F8FF',alpha=1.0,edgecolor='none')
plt.fill_betweenx(y,x-xerr, x+xerr,facecolor='#F0F8FF',alpha=1.0,edgecolor='none')

这样,你就不会有边缘,这将交叉,并给这个“折叠”了。此外,它可能会产生一个错误带的足够错觉。不过,您必须同时使用
fill\u between
fill\u betweenx

谢谢您的回答!但我发现很难将XER和YER放在一个带边框的不确定区域(相同颜色)(
edgecolor
)。这仍然会导致干扰。在帖子中添加了一张图片。您可以在上半部分看到交叉点。@smoneck我是否理解正确:您正在寻找一个信封,其中包括平滑条带中的所有错误?或者,例如,在Anstellwinkel=0的绘图中,是否希望标注栏触摸
y
-错误?还是这部分情节是你想要的?@smoneck我会进一步调查。非常感谢你的努力,Schorsch!但如果我是对的,当Xer和Yer重叠时,不确定区域是错的。我添加了一张问题图,在图中我添加了一条红线,补充了我认为正确的区域。我也在沿着这些线思考。然而,你不认为这是一个相当保守的估计吗?我将尝试找出一种将边界曲线拟合到点云的智能方法。你的最后期限是什么?我对草图做了一点调整,以使I)更清晰,ii)纠正一些错误。我不认为我的例子是保守的。想象完全不相关的点与错误值(无论它们来自何处)。因此,你必须考虑平方误差区域。错误如何在两点之间传播?最简单的方法是我画的一阶近似。不要在这方面花太多精力!Python有太多令人难以置信的模块,我无法想象没有这样一个非常基本的问题。