matplotlib.pyplot.errorbar 正在抛出一个不应该的错误?
matplotlib.pyplot.errorbar is throwing an error it shouldn't?
我正在尝试用我的数据绘制误差线图。 X 是一个 9 元素的 ndarray。 Y 和 Yerr 是 9x5 ndarrays。当我打电话时:
matplotlib.pyplot.errorbar(X, Y, Yerr)
我得到一个 ValueError:"yerr must be a scalar, the same dimensions as y, or 2xN."
但是 Y.shape == Yerr.shape
是正确的。
我 运行 在 64 位 Windows 7 上使用 Spyder 2.3.8 和 Python 3.5.1。 Matplotlib 是最新的。我已经为 Visual Studio 2015 安装了 Visual C++ Redistributable。
有什么想法吗?
编辑:一些数据。
X=numpy.array([1,2,3])
Y=numpy.array([[1,5,2],[3,6,4],[9,3,7]])
Yerr=numpy.ones_like(Y)
嗯....
通过研究引发错误的模块的第 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, = " 作业似乎也有点古怪。
也许 "dimension of y" 文档实际上意味着 1xN...
无论如何,这可行:
for y, yerr in zip(Y, Yerr):
matplotlib.pyplot.errorbar(X, y, yerr)
我正在尝试用我的数据绘制误差线图。 X 是一个 9 元素的 ndarray。 Y 和 Yerr 是 9x5 ndarrays。当我打电话时:
matplotlib.pyplot.errorbar(X, Y, Yerr)
我得到一个 ValueError:"yerr must be a scalar, the same dimensions as y, or 2xN."
但是 Y.shape == Yerr.shape
是正确的。
我 运行 在 64 位 Windows 7 上使用 Spyder 2.3.8 和 Python 3.5.1。 Matplotlib 是最新的。我已经为 Visual Studio 2015 安装了 Visual C++ Redistributable。
有什么想法吗?
编辑:一些数据。
X=numpy.array([1,2,3])
Y=numpy.array([[1,5,2],[3,6,4],[9,3,7]])
Yerr=numpy.ones_like(Y)
嗯....
通过研究引发错误的模块的第 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, = " 作业似乎也有点古怪。
也许 "dimension of y" 文档实际上意味着 1xN...
无论如何,这可行:
for y, yerr in zip(Y, Yerr):
matplotlib.pyplot.errorbar(X, y, yerr)