title: Fitting with a gaussian
body: <p>I have some problems when trying to fit data from a text file with a gaussian. This is my code, where cal1_p1 is an array containing 54 values. </p>
  
  <pre><code>%matplotlib inline
  import matplotlib.pyplot as plt
  import numpy as np  
  from scipy.optimize import curve_fit
  
  cal1=np.loadtxt("C:/Users/Luca/Desktop/G3/X_rays/cal1_5min_Am.txt")
  cal1_p1=[0 for a in range(854,908)]
  for i in range(0,54):
        cal1_p1[i]=cal1[i+854]   
  # cal1_p1 takes the following values: 
  </code></pre>
  
  <p>[5.0,6.0,5.0,11.0,4.0,9.0,14.0,13.0,13.0,14.0,12.0,13.0,16.0,20.0,15.0,23.0,23.0,33.0,43.0,46.0,41.0,40.0,49.0,57.0,62.0,61.0,53.0,65.0,64.0,42.0,72.0,55.0,47.0,43.0,38.0,46.0,37.0,39.0,27.0,18.0,20.0,20.0,18.0,10.0,11.0,8.0,10.0,6.0,8.0,8.0,6.0,10.0,6.0,4.0]</p>
  
  <pre><code>x=np.arange(854,908)
  
  def gauss(x,sigma,m):
      return np.exp(-(x-m)**2/(2*sigma**2))/(sigma*np.sqrt(2*np.pi))
  from scipy.optimize import curve_fit
  popt,pcov=curve_fit(gauss,x,cal1_p1,p0=[10,880])
  
  plt.xlabel("Channel")
  plt.ylabel("Counts")
  axes=plt.gca()
  axes.set_xlim([854,907])
  axes.set_ylim([0,75])
  plt.plot(x,cal1_p1,"k")     
  plt.plot(x,gauss(x,*popt),'b', label='fit')
  </code></pre>
  
  <p>The problem is that the resulting gaussian is really squeezed, namely it has a very low variance. Even if I try to modify the initial value p_0 the result doesn't change. What could be the problem? Thanks for any help you can provide!</p>