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

Posted

技术标签:

【中文标题】在 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 【发布时间】:2017-12-02 22:33:17 【问题描述】:

我正在尝试使用 mplot3d 绘制散点图,但 scatter 方法给出了值错误:“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

有什么帮助吗?

【问题讨论】:

查询错误时,需要提供问题的minimal reproducible example。 对不起。新来的。 【参考方案1】:

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

print(xx.shape)

您将观察到xx 的形状为(512, 1),而yy 的形状为(512,2)。因此yy 有两列,因此条目数是xx 的两倍。

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

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

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

【讨论】:

感谢您的帮助。非常感谢。

以上是关于在 mplot3d 的 scatter() 上获取值错误:参数 xs 和 ys 必须具有相同的大小。但它们的大小相同的主要内容,如果未能解决你的问题,请参考以下文章

在 IPython 或 Jupyter Notebook 中显示可旋转的 3D 图

如何在 matplotlib mplot3D 或类似文件中显示 3D 数组等值面的 3D 图?

python文件打包成exe文件,报错No module named mpl_toolkits.mplot3d

如何在Scatter Series谷歌图表上绘制自定义多边形?

在 Vue 上使用带有 Webpack 的 plotly.js 3d scatter3d

如何在Scatter Google Charts中显示两种不同的颜色?