Surface and 3d contour in matplotlib
Apparently it is a bug, if you try this
import numpy as npfrom mpl_toolkits.mplot3d import axes3dimport matplotlib.pyplot as pltfig = 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, rstride=1, cstride=1)ax.contour(X, Y, Z+1, 10, lw=3, colors="k", linestyles="solid")plt.show()
And rotate around, you will see the contour lines disappearing when they shouldn't
I think you want to set the offset to the contour :
ax.contour(X, Y, Z, 10, offset=-1, lw=3, colors="k", linestyles="solid", alpha=0.5)
See this example for more:
http://matplotlib.org/examples/mplot3d/contour3d_demo3.html
And the docs here:
http://matplotlib.org/mpl_toolkits/mplot3d/tutorial.html#contour-plots
offset: If specified plot a projection of the contour lines on this position in plane normal to zdir
Note, zdir = 'z'
by default, but you can project in the x or y direction be setting the zdir
accordingly.