def _plot_fwhm_axis(self, arr, iqcalc, skybg, color1, color2, color3, fwhm_method='gaussian'): N = len(arr) X = np.array(list(range(N))) Y = arr # subtract sky background Y = Y - skybg maxv = Y.max() # clamp to 0..max Y = Y.clip(0, maxv) self.logger.debug("Y=%s" % (str(Y))) self.ax.plot(X, Y, color=color1, marker='.') res = iqcalc.calc_fwhm(arr, method_name=fwhm_method) fwhm, mu = res.fwhm, res.mu # Make a little smoother fitted curve by plotting intermediate # points XN = np.linspace(0.0, float(N), N * 10) Z = np.array([res.fit_fn(x, res.fit_args) for x in XN]) self.ax.plot(XN, Z, color=color1, linestyle=':') self.ax.axvspan(mu - fwhm / 2.0, mu + fwhm / 2.0, facecolor=color3, alpha=0.25) return fwhm
def _plot_fwhm_axis(self, arr, iqcalc, skybg, color1, color2, color3): N = len(arr) X = numpy.array(list(range(N))) Y = arr # subtract sky background Y = Y - skybg maxv = Y.max() # clamp to 0..max Y = Y.clip(0, maxv) self.logger.debug("Y=%s" % (str(Y))) self.ax.plot(X, Y, color=color1, marker='.') fwhm, mu, sdev, maxv = iqcalc.calc_fwhm(arr) # Make a little smoother gaussian curve by plotting intermediate # points XN = numpy.linspace(0.0, float(N), N*10) Z = numpy.array([iqcalc.gaussian(x, (mu, sdev, maxv)) for x in XN]) self.ax.plot(XN, Z, color=color1, linestyle=':') self.ax.axvspan(mu-fwhm/2.0, mu+fwhm/2.0, facecolor=color3, alpha=0.25) return (fwhm, mu, sdev, maxv)