2012-05-03 11 views
6

wykreślić szereg punktów używając mplo3d:Jak uzyskać właściwości wybranego obiektu w 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) 

a potem dodać funkcję kompletacji:

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

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

i wreszcie wykreślić go:

p.show() 

Czy istnieje sposób uzyskiwanie współrzędnych 3D ze znacznika, który klikam? Do tej pory mogę uzyskać indeks punktu na liście używanego w ax.scatter(), ale , który nie będzie go wycinać, ponieważ używam ax.scatter wiele razy i to musi być w ten sposób (używam różnych kolorów dla przykładowe)

Pozdrowienia

Odpowiedz

8

można użyć _offsets3d atrybut event.artist aby uzyskać dane współrzędnych, a następnie użyj ind dostać odebrał punkt:

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

to działa! Wielkie dzięki. – user1371437

+0

DZIĘKUJEMY, to działa !!!! – Tom

Powiązane problemy