z = 3 * (1 - x) ** 2 * np.exp(-x ** 2 - (y + 1) ** 2) - 10 * (x / 5 - x ** 
    3 - y ** 5) * np.exp(-x ** 2 - y ** 2) - 1.0 / 3 * np.exp(-(x + 1) ** 2 -
    y ** 2)
surf = mlab.surf(x, y, z, colormap='RdYlBu', warp_scale='auto')
surf.actor.property.interpolation = 'phong'
surf.actor.property.specular = 0.1
surf.actor.property.specular_power = 5
fig = plt.figure()
ax = fig.gca(projection='3d')
ls = LightSource(azdeg=0, altdeg=65)
rgb = ls.shade(z, plt.cm.RdYlBu)
surf = ax.plot_surface(x, y, z, rstride=1, cstride=1, linewidth=0,
    antialiased=False, facecolors=rgb)
plt.show()
mlab.show()
Phong shading for shiny Python 3D surface plots