编辑:该问题最有可能与版本有关。 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
可以是int
或array_like
,所以我不知道为什么它甚至会调用len()
函数< / p>
有什么想法为什么会发生这种情况以及有关如何解决它的建议?
答案 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)