使用Mayavi绘制3D散点图遇TypeError: unhashable type: 'PolyData'错误求助
Mayavi绘制3D散点图报错:TypeError: unhashable type: 'PolyData'
问题重现
使用Mayavi绘制3D散点图时,执行以下代码出现上述错误:
from mayavi import mlab import numpy as np X = Dataframe['Column1'].to_numpy() Y = Dataframe['Column2'].to_numpy() Z = Dataframe['Column3'].to_numpy() mlab.points3d(X,Y,Z, color =(0.5,0.5,0.5))
错误成因
- 变量名冲突:这是最常见的原因。如果代码其他位置定义了名为
color的变量,且该变量是Mayavi生成的PolyData类型对象(比如之前创建的3D模型、曲面等),调用mlab.points3d时会误把这个PolyData对象当作颜色参数传入。而PolyData是不可哈希的类型,直接导致报错。 - 数组类型异常:虽然代码中用了
.to_numpy(),但如果X/Y/Z数组包含非数值类型(比如字符串、缺失值),或者数组的dtype不符合要求,Mayavi内部处理时可能生成PolyData类型的中间对象,进而触发哈希错误。可以通过print(X.dtype)检查数组是否为数值型(如float64、int64)。
内容的提问来源于stack exchange,提问作者Rajesh Patel
相关产品推荐
相关产品推荐

