Biểu đồ bề mặt 3D
Vẽ bề mặt và lưới 3D bằng projection="3d", plot_surface và view_init.
Giới thiệu
Có những dữ liệu phụ thuộc vào hai biến đầu vào, như độ cao phụ thuộc vào x và y. Một Axes 3D, tạo bằng projection="3d", có thể vẽ dữ liệu đó thành một bề mặt. view_init xoay camera để bạn nhìn từ góc đẹp nhất.
np.meshgrid biến hai dãy một chiều thành hai lưới hai chiều X và Y, nhờ đó Z được tính cho mọi cặp (x, y) cùng lúc. plot_surface tô bề mặt bằng bảng màu; plot_wireframe chỉ vẽ các đường lưới. view_init(elev, azim) đặt camera: elev là góc nhìn từ trên xuống, azim là góc xoay quanh trục đứng.
Trình mô phỏng tương tác
Xoay camera bằng elev và azim, chuyển giữa bề mặt (surface) và lưới (wireframe), thử các hàm khác.
Ví dụ Matplotlib chạy được
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()
