Mô-đun con axes3d
có trong bộ công cụ mpl_toolkits.mplot3d
của Matplotlib cung cấp các phương thức cần thiết để tạo sơ đồ bề mặt 3D bằng Python
Sơ đồ bề mặt
Các sơ đồ bề mặt được tạo bằng phương pháp ax.plot_surface[]
của Matplotlib. Theo mặc định, các ô bề mặt là một màu duy nhất. Định dạng chung của phương thức ax.plot_surface[]
của Matplotlib bên dưới
ax.plot_surface[X, Y, Z]
Trong đó
from mpl_toolkits.mplot3d import axes3d import matplotlib.pyplot as plt import numpy as np #if using a Jupyter notebook, include: %matplotlib inline1 vàx = np.arange[-5,5,0.1] y = np.arange[-5,5,0.1] X,Y = np.meshgrid[x,y] Z = X*np.exp[-X2 - Y2]
fig = plt.figure[figsize=[6,6]] ax = fig.add_subplot[111, projection='3d']
# Plot a 3D surface ax.plot_surface[X, Y, Z]
plt.show[]
from mpl_toolkits.mplot3d import axes3d import matplotlib.pyplot as plt import numpy as np #if using a Jupyter notebook, include: %matplotlib inline2 là mảng 2D gồm các điểm x và y vàx = np.arange[-5,5,0.1] y = np.arange[-5,5,0.1] X,Y = np.meshgrid[x,y] Z = X*np.exp[-X2 - Y2]
fig = plt.figure[figsize=[6,6]] ax = fig.add_subplot[111, projection='3d']
# Plot a 3D surface ax.plot_surface[X, Y, Z]
plt.show[]
from mpl_toolkits.mplot3d import axes3d import matplotlib.pyplot as plt import numpy as np #if using a Jupyter notebook, include: %matplotlib inline3 là mảng 2D có chiều caox = np.arange[-5,5,0.1] y = np.arange[-5,5,0.1] X,Y = np.meshgrid[x,y] Z = X*np.exp[-X2 - Y2]
fig = plt.figure[figsize=[6,6]] ax = fig.add_subplot[111, projection='3d']
# Plot a 3D surface ax.plot_surface[X, Y, Z]
plt.show[]
Một ví dụ về sơ đồ bề mặt 3D có trong phần mã tiếp theo. Lưu ý cách đối số từ khóa
from mpl_toolkits.mplot3d import axes3d import matplotlib.pyplot as plt import numpy as np #if using a Jupyter notebook, include: %matplotlib inline4 được bao gồm trong phương thứcx = np.arange[-5,5,0.1] y = np.arange[-5,5,0.1] X,Y = np.meshgrid[x,y] Z = X*np.exp[-X2 - Y2]
fig = plt.figure[figsize=[6,6]] ax = fig.add_subplot[111, projection='3d']
# Plot a 3D surface ax.plot_surface[X, Y, Z]
plt.show[]
from mpl_toolkits.mplot3d import axes3d import matplotlib.pyplot as plt import numpy as np #if using a Jupyter notebook, include: %matplotlib inline5x = np.arange[-5,5,0.1] y = np.arange[-5,5,0.1] X,Y = np.meshgrid[x,y] Z = X*np.exp[-X2 - Y2]
fig = plt.figure[figsize=[6,6]] ax = fig.add_subplot[111, projection='3d']
# Plot a 3D surface ax.plot_surface[X, Y, Z]
plt.show[]
Trong 1]
from mpl_toolkits.mplot3d import axes3d import matplotlib.pyplot as plt import numpy as np #if using a Jupyter notebook, include: %matplotlib inlinex = np.arange[-5,5,0.1] y = np.arange[-5,5,0.1] X,Y = np.meshgrid[x,y] Z = X*np.exp[-X2 - Y2]
fig = plt.figure[figsize=[6,6]] ax = fig.add_subplot[111, projection='3d']
# Plot a 3D surface ax.plot_surface[X, Y, Z]
plt.show[]
Sơ đồ khung dây
Biểu đồ khung dây tương tự như biểu đồ bề mặt, nhưng trên biểu đồ khung dây, toàn bộ bề mặt 3d không được hiển thị. Thay vào đó, bề mặt gần đúng với "dây" được đặt trên bề mặt 3D. Các sơ đồ bề mặt 3D khung dây có thể được xây dựng bằng phương pháp _______6 của Matplotlib. Phương pháp chung dưới đây
________số 8_______Trong đó
from mpl_toolkits.mplot3d import axes3d import matplotlib.pyplot as plt import numpy as np #if using a Jupyter notebook, include: %matplotlib inline1 vàx = np.arange[-5,5,0.1] y = np.arange[-5,5,0.1] X,Y = np.meshgrid[x,y] Z = X*np.exp[-X2 - Y2]
fig = plt.figure[figsize=[6,6]] ax = fig.add_subplot[111, projection='3d']
# Plot a 3D surface ax.plot_surface[X, Y, Z]
plt.show[]
from mpl_toolkits.mplot3d import axes3d import matplotlib.pyplot as plt import numpy as np #if using a Jupyter notebook, include: %matplotlib inline2 là mảng 2D gồm các điểm x và y vàx = np.arange[-5,5,0.1] y = np.arange[-5,5,0.1] X,Y = np.meshgrid[x,y] Z = X*np.exp[-X2 - Y2]
fig = plt.figure[figsize=[6,6]] ax = fig.add_subplot[111, projection='3d']
# Plot a 3D surface ax.plot_surface[X, Y, Z]
plt.show[]
from mpl_toolkits.mplot3d import axes3d import matplotlib.pyplot as plt import numpy as np #if using a Jupyter notebook, include: %matplotlib inline3 là mảng 2D có chiều cao. Các đối số từ khóax = np.arange[-5,5,0.1] y = np.arange[-5,5,0.1] X,Y = np.meshgrid[x,y] Z = X*np.exp[-X2 - Y2]
fig = plt.figure[figsize=[6,6]] ax = fig.add_subplot[111, projection='3d']
# Plot a 3D surface ax.plot_surface[X, Y, Z]
plt.show[]
ax.plot_wireframe[X, Y, Z, rstride=10, cstride=10]
0 và ax.plot_wireframe[X, Y, Z, rstride=10, cstride=10]
1 xác định kích thước bước hàng và kích thước bước cột. Các đối số từ khóa này kiểm soát mức độ gần nhau của các "dây" trong biểu đồ khung dâyĐoạn code tiếp theo vẽ hai ô wire frame cạnh nhau
Trong 2]
import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import axes3d # if using a Jupyter notebook, include: %matplotlib inlinefig = plt.figure[figsize=[12,6]] ax1 = fig.add_subplot[121, projection='3d'] ax2 = fig.add_subplot[122, projection='3d']
x = np.arange[-5,5,0.1] y = np.arange[-5,5,0.1] X,Y = np.meshgrid[x,y] Z = X*np.exp[-X2 - Y2]
# Plot a basic wireframe ax1.plot_wireframe[X, Y, Z, rstride=10, cstride=10] ax1.set_title['row step size 10, column step size 10']
ax2.plot_wireframe[X, Y, Z, rstride=20, cstride=20] ax2.set_title['row step size 20, column step size 20']
plt.show[]
Đồ thị bề mặt Gradient
Biểu đồ bề mặt chuyển màu kết hợp biểu đồ bề mặt 3D với biểu đồ đường viền 2D. Trong biểu đồ bề mặt gradient, bề mặt 3D được tô màu giống như biểu đồ đường viền 2D. Phần cao của bề mặt có màu khác với phần thấp của bề mặt. Cuộc gọi phương thức chung dưới đây. Lưu ý đối số từ khóa
ax.plot_wireframe[X, Y, Z, rstride=10, cstride=10]
2surf = ax.plot_surface[X, Y, Z,
cmap=,
linewidth=0,
antialiased=False]
Đối số từ khóa
ax.plot_wireframe[X, Y, Z, rstride=10, cstride=10]
3 gán màu cho bề mặt. Có rất nhiều tùy chọn bản đồ màu trong Matplotlib. Các tùy chọn bao gồm ax.plot_wireframe[X, Y, Z, rstride=10, cstride=10]
4, ax.plot_wireframe[X, Y, Z, rstride=10, cstride=10]
5 và ax.plot_wireframe[X, Y, Z, rstride=10, cstride=10]
6. Tìm tất cả các bản đồ màu của Matplotlib trong tài liệu Matplotlib tại matplotlib. org/hướng dẫn/màu sắc/bản đồ màu. Một thanh màu có thể được thêm dọc theo biểu đồ bằng cách gọi phương thức ax.plot_wireframe[X, Y, Z, rstride=10, cstride=10]
7 và chuyển vào đối tượng biểu đồ bề mặtPhần mã tiếp theo xây dựng biểu đồ bề mặt gradient sử dụng bản đồ màu
ax.plot_wireframe[X, Y, Z, rstride=10, cstride=10]
5Trong 3]
import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import axes3d # if using a Jupyter notebook, include: %matplotlib inlinefig = plt.figure[figsize=[10,6]] ax1 = fig.add_subplot[111, projection='3d']
x = np.arange[-5,5,0.1] y = np.arange[-5,5,0.1] X,Y = np.meshgrid[x,y] Z = X*np.exp[-X2 - Y2]
mycmap = plt.get_cmap['gist_earth'] ax1.set_title['gist_earth color map'] surf1 = ax1.plot_surface[X, Y, Z, cmap=mycmap] fig.colorbar[surf1, ax=ax1, shrink=0.5, aspect=5]
plt.show[]
Sơ đồ bề mặt 3D với phép chiếu sơ đồ đường viền 2D
Các sơ đồ bề mặt 3D được tạo bằng Matplotlib có thể được chiếu lên các bề mặt 2D. Dưới đây là đoạn code tạo biểu đồ bề mặt 3D. Các hình chiếu của bề mặt 3D được hiển thị trên các ô đường viền 2D