在 mplot3d 的 scatter() 上获取值错误:争论 xs 和 ys 必须具有相同的大小。但它们的尺寸相同

Getting value error on scatter() of mplot3d : arguements xs and ys must be of the same size. But they have the same size

我正在尝试使用 mplot3d 绘制散点图,但散点法给我值错误:'xs' 和 'ys' 必须具有相同的大小。 当我打印它们的类型和尺寸时,它们看起来很完美。我无法弄清楚哪里出了问题。

这是我的代码的一部分:
'mat2' 是 512 X 4 已经计算好的矩阵。

mat2 = np.array(mat2)

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
co = []

xx = mat2[:,:1]
yy = mat2[:,:2]
z = mat2[:,:3]
co = mat2[:,:4]

#printing the size and types of the arguments to the scatter()
print(str(len(xx))+str(type(xx))+' '+str(len(yy))+str(type(yy))+' '+str(len(z))+' '+str(len(co)))

ax.scatter(np.array(xx), np.array(yy), z=np.array(z), c=np.array(co), cmap=plt.hot())

这是我得到的输出的屏幕截图 - ValueError Screenshot

有什么帮助吗?

xxyy 大小不同。您需要打印形状而不是打印长度。

print(xx.shape)

您会发现 xx 的形状为 (512, 1),而 yy 的形状为 (512,2)。因此 yy 有两列,因此条目数是 xx.

的两倍

由于您似乎想要绘制 mat2 的第二列与第一列的散点图,因此您应该这样创建 xxyy

xx = mat2[:,0]
yy = mat2[:,1]

其他数组zco当然也是如此。