ax.plot_surface(x_surf, y_surf, z_surf, cmap=cm.hot)
n = 100
seed(0)
x = [random() for i in range(n)]
y = [random() for i in range(n)]
z = [random() for i in range(n)]
ax.scatter(x, y, z)
ax.set_xlabel('x label')
ax.set_ylabel('y label')
ax.set_zlabel('z label')
plt.show()
Combining scatter plot with surface plot