Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Tương đương surf(x,y,z,c) của Matlab trong Matplotlib

Ví dụ minh họa cách đạt hiệu ứng tương đương surf(x,y,z,c) của Matlab trong Matplotlib.

Các bước

  • Thiết lập kích thước figure và padding
  • Tạo figure mới
  • Thêm ax 3D
  • Tạo dữ liệu r, u, v, x, y, z bằng Numpy
  • Tạo surface plot
  • Hiển thị bằng show()

Ví dụ mã nguồn

import matplotlib.pyplot as plt
import numpy as np

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

fig = plt.figure()
ax = fig.add_subplot(projection='3d')
r = 0.05
u, v = np.mgrid[0:2 * np.pi:30j, 0:np.pi:20j]
x = np.cos(u) * np.sin(v)
y = np.sin(u) * np.sin(v)
z = np.cos(v)
ax.plot_surface(x, y, z, cmap=plt.cm.YlGnBu_r)
plt.show()

Kết quả

Bề mặt cầu 3D với colormap YlGnBu_r (vàng-xanh-lục-lam ngược).

Tương đương surf(x,y,z,c) của Matlab trong Matplotlib

So sánh Matlab vs Matplotlib:

  • Matlab: surf(x, y, z, c) - c là màu
  • Matplotlib: ax.plot_surface(x, y, z, facecolors=c, cmap=...) hoặc ax.plot_surface(x, y, z, cmap=...) với c map vào colormap
  • Để dùng màu tùy biến: facecolors=plt.cm.viridis(c)