首页 > 解决方案 > 使用 matplotlib 3D scatter,第 3 维被忽略

问题描述

我有一个数据集,它适用于二维,但第三维的所有值都设置为零,即使值存在:

>>> x
[[-1.731428 -8.946514  0.274677]
 [-1.056165  2.154681  9.164814]
 [ 2.746465 -3.161551 -7.168484]
 ...
 [and so on.....]

即数据集显然具有三列非零值。为了制作散点图,我使用以下代码

from matplotlib import pyplot as plt
from mpl_toolkits.mplot3D import Axes3D

fig = plt.figure()
ax = Axes3D(fig)
plt.scatter(x[:,0], x[:,1], x[:,2], marker='o')
plt.show()

我得到的是以下内容:

在此处输入图像描述

其他两个维度工作正常。此外,如果我手动定义数据集,它也可以正常工作:

a = [1, 2, 3, 4]
b = [2, 3, -7, 2]
c = [1, 5, 0, 1]

fig = plt.figure()
ax = Axes3D(fig)
plt.scatter(a, b, c, marker='o')
plt.show()
# WORKS FINE

我的数据存储方式是否存在问题?我试图向上看,但我找不到它。

标签: pythonmatplotlib3d

解决方案


推荐阅读