2014-05-11 95 views
1

我很難過,爲什麼這是行不通的。我將一堆浮點數據從csv文件中拖到一個numpy數組中,我只是想根據數組中的3列創建一個3d散點圖。matplotlib 3D從2d numpy陣列頂點分散錯誤

#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」,一旦固定它工作得很好。

+0

你真的在這裏展示完整的錯誤消息?壞的錯誤信息從來都不是好事。哪個matplotlib版本是?如果相關,請通過github將此報告給matplotlib項目。 –

回答

2

可以使用Axes3DSubplot對象的scatter3D()方法:

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')