当指定levels参数时,pyplot.contourf()返回错误



编辑:问题很可能与版本有关。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)

它总是返回错误:TypeError: len() of unsized object

在文档中,它说参数levels可以是intarray_like,所以我不知道为什么它甚至会调用len()函数

有什么想法为什么会发生这种情况,以及如何解决它的建议吗?

很抱歉,这种情况发生在您身上。2.2.3版中的文档发生了更改,但没有完全实现此功能。因此,根据matplotlib的版本,levels参数的解释会有所不同。

matplotlib<3.0.0

CCD_ 9被解释为绘制轮廓的级别列表。整数被解释为单个级别。对于contourf(填充轮廓(图,您至少需要两个级别。使用以前已知的方法将级别的数量指定为第二个或第四个未命名的参数

plt.contourf(z, 100)
plt.contourf(x, y, z, 100)

matplotlib>=3.0

CCD_ 11可以取列表,也可以取整数。当为整数时,表示级别的(近似[*](个数。相关的PR是这样的。

plt.contourf(z, levels=100)
plt.contourf(x, y, z, levels=100)

最新更新