2014-05-11 2 views
1

Je suis perplexe quant à la raison pour laquelle cela ne fonctionne pas. Je suis en train de tirer un tas de données à virgule flottante dans un tableau numpy d'un fichier csv, et je veux juste créer un nuage de points 3d basé sur 3 des colonnes du tableau.matplotlib 3d scatter à partir de 2d nombre de nœuds de tableau numpy erreur

#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() 

chaque fois que je reçois une erreur d'assertion:

/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: 

Je ... juste pensé à elle, mais je posterai ce une façon parce que c'est le message d'erreur le plus inutile i jamais rencontré. le problème est là:

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

marqueur = « 0 » est invalide, je voulais dire frapper marqueur = « o », une fois fixé, il fonctionne très bien.

+0

Êtes-vous vraiment montrer le message d'erreur complet ici? Les messages d'erreur incorrects ne sont jamais une bonne chose. Quelle version de matplotlib est-ce? Le cas échéant, veuillez le signaler au projet matplotlib via github. –

Répondre

2

Vous pouvez utiliser la méthode scatter3D() de l'objet 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') 
Questions connexes