2012-05-03 9 views
6

que trazar una serie de puntos utilizando mplo3d:¿Cómo obtener las propiedades del objeto recogido en 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) 

y luego añadir una función de selector:

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

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

y finalmente trazar que:

p.show() 

¿Hay una manera de obteniendo las coordenadas 3D del marcador en el que estoy haciendo clic Hasta ahora puedo obtener el índice del punto en la lista que usé en ax.scatter(), pero que no lo cortaré ya que uso ax.scatter muchas veces y esto tiene que ser así (uso colores diferentes para ejemplo)

Saludos

Respuesta

8

Usted puede utilizar el atributo de _offsets3d event.artist para obtener los datos de coordenadas, y luego usar ind para obtener el punto designado:

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

funciona! Muchas gracias. – user1371437

+0

¡GRACIAS, esto funciona! – Tom

Cuestiones relacionadas