2012-05-03 20 views
6

tôi âm mưu một loạt các điểm sử dụng mplo3d:Làm thế nào để có được các thuộc tính của đối tượng được chọn trong 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) 

và sau đó tôi thêm một chức năng chọn:

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

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

và cuối cùng là vẽ nó:

p.show() 

Có một cách để nhận tọa độ 3D từ điểm đánh dấu tôi đang nhấp? Cho đến nay tôi có thể lấy chỉ mục của điểm trong danh sách tôi đã sử dụng tại ax.scatter(), nhưng sẽ không cắt nó khi tôi sử dụng ax.scatter nhiều lần và điều này phải theo cách này (tôi sử dụng các màu khác nhau cho chẳng hạn)

Trân

Trả lời

8

Bạn có thể sử dụng _offsets3d thuộc tính của event.artist để có được những dữ liệu phối hợp, và sau đó sử dụng ind để có được những điểm chọn:

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

Nó hoạt động! Cảm ơn rất nhiều. – user1371437

+0

THANK YOU, công trình này !!!! – Tom