Matplotlib ระดับสูง

กราฟพื้นผิว 3 มิติ

วาดพื้นผิวและโครงลวด 3 มิติด้วย projection="3d", plot_surface และ view_init

บทนำ

ข้อมูลบางอย่างขึ้นกับสองค่า เช่น ความสูงที่ขึ้นกับ x และ y Axes แบบ 3 มิติที่สร้างด้วย projection="3d" วาดข้อมูลแบบนี้เป็นพื้นผิวได้ view_init หมุนกล้องให้คุณมองจากมุมที่ดีที่สุด

np.meshgrid แปลงช่วง 1 มิติสองช่วงเป็นตาราง 2 มิติ X และ Y จึงคำนวณ Z ของทุกคู่ (x, y) ได้ในครั้งเดียว plot_surface ระบายสีพื้นผิวด้วยชุดสี ส่วน plot_wireframe จะวาดแค่เส้นตาราง view_init(elev, azim) กำหนดกล้อง elev คือมุมเงย และ azim คือการหมุนรอบแกนตั้ง

ตัวแสดงภาพแบบโต้ตอบ

หมุนกล้องด้วย elev และ azim สลับระหว่างพื้นผิวกับโครงลวด (wireframe) และลองฟังก์ชันอื่น

ตัวอย่าง Matplotlib ที่รันได้

Matplotlib
รันโค้ด →
main.py
import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-3, 3, 40)
y = np.linspace(-3, 3, 40)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X ** 2 + Y ** 2))

fig = plt.figure(figsize=(7, 5))
ax = fig.add_subplot(projection="3d")
ax.plot_surface(X, Y, Z, cmap="viridis")
ax.view_init(elev=30, azim=45)
ax.set_title("z = sin(sqrt(x² + y²))")
plt.show()
สร้างปุ่ม Run สำหรับตัวอย่างนี้ กราฟที่โค้ดนี้วาด
กราฟพื้นผิว 3 มิติ