pyzebra/pyzebra/visualize peak fitter.py
JakHolzer 0c9e906ba4
Visualize fit
Copy and paste into fit2 righ after:
  num_int_background = simps(background_errors, x[numfit_min:numfit_max])
  int_area = num_int_area-num_int_background

ca line 180
2020-09-25 16:19:10 +02:00

39 lines
1.3 KiB
Python

plt.figure(figsize=(20, 10))
plt.plot(x, y, "b-", label="Original data")
plt.plot(x, comps["gaussian"], "r--", label="Gaussian component")
plt.fill_between(x, comps["gaussian"], facecolor="red", alpha=0.4)
plt.plot(x, comps["background"], "g--", label="Line component")
plt.fill_between(x, comps["background"], facecolor="green", alpha=0.4)
plt.fill_between(
x[numfit_min:numfit_max],
y[numfit_min:numfit_max],
facecolor="yellow",
alpha=0.4,
label="Integrated area", )
plt.plot(x, result.best_fit, "k-", label="Best fit")
plt.title(
"%s \n Gaussian: centre = %9.4f, sigma = %9.4f, area = %9.4f \n"
"background: slope = %9.4f, intercept = %9.4f \n"
"Int. area = %9.4f +/- %9.4f \n"
"fit area = %9.4f +/- %9.4f \n"
"ratio((fit-int)/fit) = %9.4f"
% (
keys,
result.params["g_cen"].value,
result.params["g_width"].value,
result.params["g_amp"].value,
result.params["slope"].value,
result.params["intercept"].value,
int_area.n,
int_area.s,
result.params["g_amp"].value,
result.params["g_amp"].stderr,
(result.params["g_amp"].value - int_area.n) / result.params["g_amp"].value
)
)
plt.legend(loc="best")
plt.show()