ax.scatter(x, y, z, marker='.', c='r')
h, yedges, zedges = np.histogram2d(y, z, bins=50)
h = h.transpose()
normalized_map = plt.cm.Blues(h / h.max())
yy, zz = np.meshgrid(yedges, zedges)
xpos = min(x) - 2
xflat = np.full_like(yy, xpos)
p = ax.plot_surface(xflat, yy, zz, facecolors=normalized_map, rstride=1,
    cstride=1, shade=False)
3D scatter plot with 2D histogram at sides