Tôi muốn vẽ một bề mặt bằng một bản đồ màu, khung dây và đường viền sử dụng matplotlib
. Một cái gì đó như thế này:Đường viền bề mặt và 3d trong matplotlib
Chú ý rằng tôi không hỏi về những đường nét nằm ở vĩ tuyến bay đến xy nhưng những người có 3D và trắng trong hình ảnh.
Nếu tôi đi theo cách ngây thơ và vẽ tất cả những điều này, tôi không thể thấy các đường bao (xem mã và hình ảnh bên dưới).
import numpy as np
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111, projection="3d")
X, Y = np.mgrid[-1:1:30j, -1:1:30j]
Z = np.sin(np.pi*X)*np.sin(np.pi*Y)
ax.plot_surface(X, Y, Z, cmap="autumn_r", lw=0.5, rstride=1, cstride=1)
ax.contour(X, Y, Z, 10, lw=3, cmap="autumn_r", linestyles="solid", offset=-1)
ax.contour(X, Y, Z, 10, lw=3, colors="k", linestyles="solid")
plt.show()
Nếu thêm tính minh bạch để các khía cạnh bề mặt sau đó tôi có thể thấy những đường nét, nhưng có vẻ thực sự lộn xộn (xem mã số và hình ảnh dưới đây)
import numpy as np
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111, projection="3d")
X, Y = np.mgrid[-1:1:30j, -1:1:30j]
Z = np.sin(np.pi*X)*np.sin(np.pi*Y)
ax.plot_surface(X, Y, Z, cmap="autumn_r", lw=0.5, rstride=1, cstride=1, alpha=0.5)
ax.contour(X, Y, Z, 10, lw=3, cmap="autumn_r", linestyles="solid", offset=-1)
ax.contour(X, Y, Z, 10, lw=3, colors="k", linestyles="solid")
plt.show()
Câu hỏi: Có cách nào để có được kết quả này trongkhông? Tuy nhiên, việc tô bóng là không cần thiết.
Không thực sự, điều này sẽ vẽ đường viền trong 2D . Nhưng không phải trong 3D như tôi muốn chúng. Xem hình ảnh ví dụ, nó có đường viền màu trắng. – nicoguaro
Ah ok, xin lỗi tôi đã hiểu nhầm câu hỏi – tom