Поверхность и 3d контур в матплотлибе

Я хотел бы построить поверхность с помощью карты цветов, каркаса и контуров, используяmatplotlib, Что-то вроде этого:

Обратите внимание, что я спрашиваю не о контурах, лежащих в плоскости, параллельной xy, а о тех, которые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? Затенение не обязательно, однако.

Ответы на вопрос(2)

Ваш ответ на вопрос