2012-05-03 1 views
6

je tracer une série de points en utilisant mplo3d:Comment obtenir les propriétés de l'objet sélectionné dans mplot3d (matplotlib + python)?

import pylab as p 
import mpl_toolkits.mplot3d.axes3d as p3 

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

ax.scatter([1], [0], [0], c='r', marker='^', picker=5) 
ax.scatter([0], [1], [0], c='g', marker='^', picker=5) 
ax.scatter([0], [0], [1], c='b', marker='^', picker=5) 

puis-je ajouter une fonction de sélecteur:

def onpick(event): 
    ind = event.ind 
    print ind 

fig.canvas.mpl_connect('pick_event', onpick) 

et enfin le tracer:

p.show() 

Est-il possible de obtenir les coordonnées 3D du marqueur que je suis en train de cliquer? Jusqu'à présent, je peux obtenir l'index du point dans la liste que j'ai utilisé à ax.scatter(), mais qui ne coupe pas car j'utilise ax.scatter plusieurs fois et cela doit être de cette façon (j'utilise des couleurs différentes pour exemple)

Cordialement

Répondre

8

Vous pouvez utiliser _offsets3d attribut de event.artist pour obtenir les données de coordonnées, puis utilisez ind pour obtenir le point choisi:

def onpick(event): 
    ind = event.ind[0] 
    x, y, z = event.artist._offsets3d 
    print x[ind], y[ind], z[ind] 
+0

Il fonctionne! Merci beaucoup. – user1371437

+0

MERCI, ça marche !!!! – Tom

Questions connexes