matplotlib 3.5.1

>>> """
========================================
Projecting contour profiles onto a graph
========================================

Demonstrates displaying a 3D surface while also projecting contour 'profiles'
onto the 'walls' of the graph.

See contourf3d_demo2 for the filled version.
"""
... 
... from mpl_toolkits.mplot3d import axes3d
... import matplotlib.pyplot as plt
... from matplotlib import cm
... 
... ax = plt.figure().add_subplot(projection='3d')
... X, Y, Z = axes3d.get_test_data(0.05)
... 
... # Plot the 3D surface
... ax.plot_surface(X, Y, Z, rstride=8, cstride=8, alpha=0.3)
... 
... # Plot projections of the contours for each dimension. By choosing offsets
... # that match the appropriate axes limits, the projected contours will sit on
... # the 'walls' of the graph.
... ax.contour(X, Y, Z, zdir='z', offset=-100, cmap=cm.coolwarm)
... ax.contour(X, Y, Z, zdir='x', offset=-40, cmap=cm.coolwarm)
... ax.contour(X, Y, Z, zdir='y', offset=40, cmap=cm.coolwarm)
... 
... ax.set(xlim=(-40, 40), ylim=(-40, 40), zlim=(-100, 100),
...  xlabel='X', ylabel='Y', zlabel='Z')
... 
... plt.show()
...