matplotlib.pyplot.errorbar 抛出了一个不应该的错误?



我正试图用我的数据制作一个错误栏图。X是一个包含9个元素的数组。Y和Y是9x5的数组。当我呼叫:

matplotlib.pyplot.errorbar(X, Y, Yerr)

我得到一个ValueError:"yerr必须是一个标量,与y相同的维度,或2xN。"

但是Y.shape == Yerr.shape是正确的。

我在64位Windows 7上运行Spyder 2.3.8和Python 3.5.1。Matplotlib是最新的。我已经安装了Visual c++ Redistributable for Visual Studio 2015.

任何想法?

编辑:一些数据

X=numpy.array([1,2,3])
Y=numpy.array([[1,5,2],[3,6,4],[9,3,7]])
Yerr=numpy.ones_like(Y)

也许这里的"dimension of y"指的是1xN…

无论如何,这可以工作:

for y, yerr in zip(Y, Yerr):
    matplotlib.pyplot.errorbar(X, y, yerr)

嗯....

通过研究引发错误的模块的第2962-2965行,我们发现

if len(yerr) > 1 and not ((len(yerr) == len(y) and not (iterable(yerr[0]) and len(yerr[0]) > 1)))

从数据

1 T len(yerr) > 1
2 T len(yerr) == len(y)
3 T iterable(yerr[0])
4 T len(yerr[0]) > 1
5 T 1 and not (2 and not (3 and 4)

但是,如果以下测试未通过,则不会触发此测试:

if (iterable(yerr) and len(yerr) == 2 and
                iterable(yerr[0]) and iterable(yerr[1])):
....

没有触发,因为len(err) = 3

一切似乎都检查出来了,除了维度。如此:

X = numpy.tile([1,2,3],3)
Y = numpy.array([1,5,2,3,6,4,9,3,7])
Yerr = numpy.ones_like(Y)

我不确定是什么原因导致的错误。

相关内容

  • 没有找到相关文章

最新更新