2012-05-03 8 views
6

मैं mplo3d का उपयोग कर बिंदुओं की श्रृंखला साजिश:mplot3d (matplotlib + पायथन) में उठाए गए ऑब्जेक्ट के गुण कैसे प्राप्त करें?

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) 

और उसके बाद मैं एक पिकर समारोह जोड़ें:

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

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

और अंत में यह साजिश:

p.show() 

वहाँ का एक तरीका है मार्कर से 3 डी निर्देशांक प्राप्त करना मैं क्लिक कर रहा हूं? अब तक मैं ax.scatter() पर उपयोग की गई सूची में बिंदु की अनुक्रमणिका प्राप्त कर सकता हूं, लेकिन जो इसे काट नहीं सकता क्योंकि मैं ax.scatter का उपयोग कई बार करता हूं और यह इस तरह से होना चाहिए (मैं अलग-अलग रंगों का उपयोग करता हूं उदाहरण)

सादर

उत्तर

8

आप डेटा समन्वय प्राप्त करने के लिए event.artist की विशेषता _offsets3d उपयोग कर सकते हैं, और फिर इंडस्ट्रीज़ का उपयोग उठाया बिंदु पाने के लिए:

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

यह काम करता है! बहुत बहुत धन्यवाद। – user1371437

+0

धन्यवाद, यह काम करता है !!!! – Tom

संबंधित मुद्दे