2012-05-03 13 views
6

Ho tracciare una serie di punti con mplo3d:Come ottenere le proprietà dell'oggetto selezionato in 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) 

e poi aggiungo una funzione selettore:

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

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

e, infine, tracciarla:

p.show() 

Esiste un modo di ottenendo le coordinate 3D dall'indicatore che sto facendo clic? Finora posso ottenere l'indice del punto nell'elenco che ho usato su ax.scatter(), ma che non lo taglierò mentre uso ax.scatter molte volte e questo deve essere in questo modo (uso colori diversi per esempio)

saluti

risposta

8

È possibile utilizzare _offsets3d attributo del event.artist per ottenere i dati di coordinate, e quindi utilizzare ind per ottenere il punto selezionato:

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

funziona! Molte grazie. – user1371437

+0

GRAZIE, questo funziona !!!! – Tom

Problemi correlati