- #1
MathewsMD
- 433
- 7
Code:
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 occurring and any ideas to approach this problem, that would be greatly appreciated!
Last edited: