pyplot.contourf() returns 指定级别参数时出错
pyplot.contourf() returns error when specified levels argument
编辑:问题很可能与版本有关。 levels
参数在版本 3.0.0 中采用整数参数,而使用版本 2.2.2 时出现此问题。
更新:安装版本>=3.0.0后没有出现该问题。
我正在尝试使用 matplotlib.pyplot.contourf()
函数在 Python 中绘制等高线图,它完美地工作如下:
plt.contourf(x, y, z)
但是当我尝试为 levels 参数指定一个整数时,如下所示:
plt.contourf(x, y, z, levels=100)
它总是 returns 错误:TypeError: len() of unsized object
在文档中,它说参数 levels
可以是 int
或 array_like
所以我不知道为什么它甚至会调用 len()
函数
知道为什么会发生这种情况,有什么解决方法的建议吗?
抱歉,这发生在你身上。文档在版本 2.2.3 中更改,但没有完全实现此功能。因此,根据 matplotlib 的版本,levels
参数的解释不同。
matplotlib < 3.0.0
levels
被解释为绘制等高线的级别列表。整数被解释为单个级别。对于 contourf
(填充等高线)图,您至少需要两个级别。使用以前已知的方式将级别数指定为第二个或第四个未命名参数
plt.contourf(z, 100)
plt.contourf(x, y, z, 100)
matplotlib >= 3.0.0
levels
可以采用列表或整数。当为整数时,表示(近似[*]) number of levels. The relevant PR is this.
plt.contourf(z, levels=100)
plt.contourf(x, y, z, levels=100)
编辑:问题很可能与版本有关。 levels
参数在版本 3.0.0 中采用整数参数,而使用版本 2.2.2 时出现此问题。
更新:安装版本>=3.0.0后没有出现该问题。
我正在尝试使用 matplotlib.pyplot.contourf()
函数在 Python 中绘制等高线图,它完美地工作如下:
plt.contourf(x, y, z)
但是当我尝试为 levels 参数指定一个整数时,如下所示:
plt.contourf(x, y, z, levels=100)
它总是 returns 错误:TypeError: len() of unsized object
在文档中,它说参数 levels
可以是 int
或 array_like
所以我不知道为什么它甚至会调用 len()
函数
知道为什么会发生这种情况,有什么解决方法的建议吗?
抱歉,这发生在你身上。文档在版本 2.2.3 中更改,但没有完全实现此功能。因此,根据 matplotlib 的版本,levels
参数的解释不同。
matplotlib < 3.0.0
levels
被解释为绘制等高线的级别列表。整数被解释为单个级别。对于 contourf
(填充等高线)图,您至少需要两个级别。使用以前已知的方式将级别数指定为第二个或第四个未命名参数
plt.contourf(z, 100)
plt.contourf(x, y, z, 100)
matplotlib >= 3.0.0
levels
可以采用列表或整数。当为整数时,表示(近似[*]) number of levels. The relevant PR is this.
plt.contourf(z, levels=100)
plt.contourf(x, y, z, levels=100)