Code (Text): from mpl_toolkits.mplot3d import Axes3D import matplotlib import numpy as np from matplotlib import cm from matplotlib import pyplot as plt import numpy as np import matplotlib.pylab as plt import math import random from scipy import integrate step = 0.1 maxval = 1.0 fig = plt.figure() ax = Axes3D(fig) R1 = 4. R2 = 7. r = np.linspace(0,20,100) p = np.linspace(0,2*np.pi,100) R,P = np.meshgrid(r,p) X,Y = R*np.cos(P),R*np.sin(P) sigma0 = random.randint(4000., 7000.)/1000. r0 = random.randint(0, R1*1000.)/1000. #random centroid theta0 = random.uniform(0, np.pi*2) Z = (np.e**((-(R**2 + r0**2- 2*R*r0*(np.cos(P)*np.cos(theta0) + np.sin(P)*np.sin(theta0)))/(2*sigma0**2)))) ax.plot_surface(X, Y, Z, rstride=2, cstride=2, cmap=cm.jet) ax.set_zlim3d(0,1) ax.set_zlabel('Intensity') plt.show() When I run this code, it works. But due to the random number generator, sometimes the input values have the graph centred near the origin (e.g. set r0 = 5), and when this occurs, there seems to be an odd indentation in the graph itself. Maybe I'm missing something, but if I'm trying to display a 2D Gaussian, this shouldn't be there, right? If anyone has any thoughts on why this is occuring and any ideas to approach this problem, that would be greatly appreciated!