ในการเพิ่ม legend ใน 3D scatterplot ด้วย scatter() ใน matplotlib สามารถทำตามขั้นตอนดังนี้ (ตัวอย่างใช้ plot() แทน scatter() เพื่อให้ legend ทำงานง่ายขึ้น):
ขั้นตอน
ตั้งค่าขนาดรูปและปรับ padding ระหว่างและรอบ subplots
เริ่มต้นตัวแปร N เก็บจำนวนข้อมูลตัวอย่าง
สร้างข้อมูล x และ y สร้าง z1 และ z2 เป็นรายการ
เพิ่ม subplot ใน figure ปัจจุบัน projection='3d'
วาด x, y และ z1 ด้วย plot() บน 2d axes marker *
วาด x, y และ z2 ด้วย plot() บน 2d axes marker o
วาง legend บนรูป
แสดงรูปด้วย show()
ตัวอย่าง
import matplotlib.pyplot as plt import numpy as np plt.rcParams["figure.figsize"] = [7.50, 3.50] plt.rcParams["figure.autolayout"] = True N = 100 x = np.random.rand(N) y = np.random.rand(N) z1 = [i*j for (i, j) in zip(x, y)] z2 = [i+j for (i, j) in zip(x, y)] axes = plt.subplot(111, projection='3d') axes.plot(x, y, z1, "*", label="xy") axes.plot(x, y, z2, "o", label="x+y") plt.legend(loc="upper right") plt.show()
ผลลัพธ์
จะแสดง 3D plot จุดดาว (xy) และจุดวงกลม (x+y) พร้อม legend ขวาบน
