Я хотел бы построить поверхность с цветовой гаммой, каркасом и контурами с использованием matplotlib
. Что-то вроде этого:Поверхностный и 3d контур в matplotlib
Обратите внимание, что я не прошу о контурах, которые лежат в плоскости, параллельной ху, но те, которые 3D и белые в изображении.
Если я иду наивным способом и замышляю все эти вещи, я не вижу контуров (см. Код и изображение ниже).
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()
Если добавить прозрачность к поверхности граней, то можно увидеть контуры, но это выглядит очень суматоху (см код и изображение ниже)
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()
Вопрос: Есть ли способ получить этот результат в matplotlib
? Тем не менее, затенение не обязательно.
Не совсем, это будет строить контур в 2D , Но не в 3D, как я их хочу. См. Пример изображения, он имеет белые контуры. – nicoguaro
А, ладно, извините, я неправильно понял вопрос – tom