1

我很困惑为什么这不起作用。我正在将一堆浮点数据从 csv 文件中提取到一个 numpy 数组中,我只想根据数组中的 3 列创建一个 3d 散点图。

#import data from the csv file
data = np.genfromtxt('data.csv', delimiter=',', dtype=float, skiprows=1)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(data[:,1], data[:,2], data[:,7], c='r', marker='0')
plt.show()

每次我得到一个断言错误:

/usr/lib/pymodules/python2.7/matplotlib/path.pyc in __init__(self, vertices, codes, _interpolation_steps, closed)
127             codes[-1] = self.CLOSEPOLY
128 
--> 129         assert vertices.ndim == 2
130         assert vertices.shape[1] == 2
131 

AssertionError:

我已经......刚刚想通了,但我会以任何方式发布这个,因为这是我遇到过的最无用的错误消息。问题出在这里:

ax.scatter(data[:,1], data[:,2], data[:,7], c='r', marker='0')

标记='0' 无效,我的意思是打标记='o',一旦修复它就可以正常工作。

4

1 回答 1

2

您可以使用对象的scatter3D()方法Axes3DSubplot

from mpl_toolkits.mplot3d import Axes3D

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

ax.scatter3D(data[:,1], data[:,2], data[:,7], c='r', marker='0')
于 2014-05-12T06:16:47.887 回答