Python matplotlib.pyplot.errorbar正在抛出一个它不应该抛出的错误';T

Python matplotlib.pyplot.errorbar正在抛出一个它不应该抛出的错误';T,python,python-3.x,matplotlib,errorbar,Python,Python 3.x,Matplotlib,Errorbar,我正试图用我的数据做一个误差条图。X是一个9元素的数组。Y和YER为9x5 Ndarray。当我打电话时: matplotlib.pyplot.errorbar(X, Y, Yerr) 我得到一个ValueError:“yerr必须是标量,与y或2xN的维数相同。” 但是Y.shape==Yerr.shape是正确的 我在64位Windows7上运行Spyder2.3.8和Python3.5.1。Matplotlib是最新的。我已经安装VisualC++的VisualStudio 2015可重

我正试图用我的数据做一个误差条图。X是一个9元素的数组。Y和YER为9x5 Ndarray。当我打电话时:

matplotlib.pyplot.errorbar(X, Y, Yerr)
我得到一个ValueError:“yerr必须是标量,与y或2xN的维数相同。”

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

我在64位Windows7上运行Spyder2.3.8和Python3.5.1。Matplotlib是最新的。我已经安装VisualC++的VisualStudio 2015可重新分发。 有什么想法吗

编辑:一些数据

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

Hmmm…

通过研究引起错误的模块第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(yerr)=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)
我不确定是什么原因导致了这个错误。“l0,=”赋值似乎也有点奇怪。

也许“y的维数”实际上意味着1xN

无论如何,这可能会奏效:

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

包括一些生成触发此问题的示例数据的代码。。。错误消息与docstring不一致,docstring表示
*xerr*/*yerr*:[scalar | N、Nx1或类似2xN的数组]