Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การดึงคุณสมบัติของ Object ที่ถูก Pick ใน Mplot3D (Matplotlib + Python)

ขั้นตอนการทำงาน

  • กำหนดขนาดรูปภาพและปรับระยะห่างรอบๆ subplots

  • สร้าง Figure ใหม่หรือเปิดใช้งาน Figure ที่มีอยู่

  • เพิ่ม ax แบบ 3D เข้าไปใน Figure

  • สร้าง Scatter Plot ข้อมูลสุ่ม

  • ผูกฟังก์ชัน pick_event_method กับ Event pick_event

  • พิมพ์พิกัด x, y, z ของจุดที่ถูกคลิก

  • แสดงรูปภาพด้วยเมธอด 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')

# Scatter plot 10 จุด สีสุ่ม ขนาด 100 picker=5 (ความทนทาน 5 pixels)
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
    print(x[ind], y[ind], z[ind])

fig.canvas.mpl_connect('pick_event', pick_event_method)
plt.show()

ผลลัพธ์

กราฟ 3D Scatter 10 จุด เมื่อคลิกที่จุดใดจุดหนึ่ง จะพิมพ์พิกัด (x, y, z) ของจุดนั้นออกมาที่ Console

คำอธิบาย: picker=5 กำหนดให้จุดสามารถถูก Pick ได้เมื่อคลิกใกล้จุดภายใน 5 พิกเซล event.ind คือ Index ของจุดที่ถูก Pick event.artist._offsets3d เก็บพิกัด x, y, z ทั้งหมด