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 可以是 intarray_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)