Matplotlib 3D में pick_event इवेंट हैंडलर का उपयोग करके क्लिक किए गए 3D स्कैटर पॉइंट के निर्देशांक (x, y, z) प्राप्त करें।
चरण
- फिगर आकार सेट करें और पैडिंग समायोजित करें
- नया फिगर बनाएं या मौजूदा सक्रिय करें
projection='3d'के साथ फिगर में 'ax' जोड़ें- यादृच्छिक डेटा बिंदुओं का स्कैटर प्लॉट बनाएं (
picker=5से पिकिंग सक्षम) pick_event_methodफंक्शन कोpick_eventइवेंट से बाइंड करें- इवेंट के x, y, z निर्देशांक प्रिंट करें
plt.show()से प्रदर्शित करें
उदाहरण
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# 3D स्कैटर प्लॉट (picker=5: 5 पिक्सेल टॉलरेंस)
ax.scatter(np.random.rand(10), np.random.rand(10), np.random.rand(10),
c=np.random.rand(10), cmap='hot', picker=5, s=100)
# पिक इवेंट हैंडलर
def pick_event_method(event):
ind = event.ind[0] # पहला चुना गया इंडेक्स
x, y, z = event.artist._offsets3d # 3D ऑफसेट्स
print(f"क्लिक किया गया बिंदु: x={x[ind]:.4f}, y={y[ind]:.4f}, z={z[ind]:.4f}")
# इवेंट कनेक्ट करें
fig.canvas.mpl_connect('pick_event', pick_event_method)
plt.show()
आउटपुट
3D स्कैटर प्लॉट। किसी बिंदु पर क्लिक करने पर कंसोल पर उसके निर्देशांक प्रिंट होते हैं:
क्लिक किया गया बिंदु: x=0.2947, y=0.7272, z=0.5517
क्लिक किया गया बिंदु: x=0.7393, y=0.8807, z=0.2073
क्लिक किया गया बिंदु: x=0.4056, y=0.9709, z=0.1012
मुख्य घटक
picker=5: पिकिंग सक्षम करता है, 5 पिक्सेल टॉलरेंस के साथevent.ind: चुने गए पॉइंट्स के इंडेक्स की सरणीevent.artist._offsets3d: 3D स्कैटर के लिए (x, y, z) सरणियों का टपलfig.canvas.mpl_connect(): इवेंट को हैंडलर से जोड़ता है
उपयोग के मामले
- इंटरैक्टिव 3D डेटा अन्वेषण
- क्लिक पर टूलटिप/विवरण दिखाना
- 3D प्लॉट से डेटा चयन/निकालना
- 3D एनोटेशन टूल बनाना
नोट
_offsets3d एक निजी एट्रिब्यूट है। भविष्य के संस्करणों में get_offsets() या समान पब्लिक API का उपयोग करना बेहतर हो सकता है।