pyplot.contourf()在指定级别参数时返回错误

时间:2018-11-10 20:52:46

标签: python matplotlib typeerror contourf

编辑:该问题最有可能与版本有关。 levels参数在版本3.0.0中采用整数参数,而在使用版本2.2.2时出现此问题。

更新:安装版本== 3.0.0后未发生此问题。

我正在尝试使用matplotlib.pyplot.contourf()函数在Python中绘制轮廓图,它的工作原理如下:

plt.contourf(x, y, z)

但是当我尝试为level参数指定整数时,如下所示:

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

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

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

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

1 个答案:

答案 0 :(得分:2)

对不起,这发生在您身上。在版本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可以采用列表或整数。如果是整数,则表示(大约[{*])个级别。相关的PR是this

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