Gaußfit über Meshgrid
Verfasst: Sonntag 23. April 2017, 12:28
Hallo,
ich habe eine dreidimensionale Messung, wobei ich die Intensität über ein x-y-Meshgrid plotte (siehe Beispielbild).
Ich habe also zwei Bereich mit einer hohen Intensität und würde gerne nur für das InGaN die Breite des Peaks mit einer Gaußverteilung fitten. Mein Code soweit lautet:
Bisher kann ich die Daten also nur einlesen und mir im Meshgrid anzeigen lassen. Ich müsste aber den Peak vom InGaN mittels eines Gaußfits in x-Richtung fitten.
Vielen Dank,
Thommy
ich habe eine dreidimensionale Messung, wobei ich die Intensität über ein x-y-Meshgrid plotte (siehe Beispielbild).

Ich habe also zwei Bereich mit einer hohen Intensität und würde gerne nur für das InGaN die Breite des Peaks mit einer Gaußverteilung fitten. Mein Code soweit lautet:
Code: Alles auswählen
Daten=np.genfromtxt(txtfile,dtype=str)
x_dat=Daten[0:,0]
y_dat=Daten[0:,1]
z_dat=Daten[0:,2]
N_x, N_y = 256, 256
x = np.linspace(x_dat.min(), x_dat.max(), N_x)
y = np.linspace(y_dat.min(), y_dat.max(), N_y)
xx, yy = np.meshgrid(x, y)
z_dat = np.clip(z_dat, 1, z_dat.max())
gridded_data = griddata(x_dat, y_dat, z_dat, xx, yy, interp='linear')
fig, axis = plt.subplots()
a_x = (x_dat.max() - x_dat.min()) / N_x
a_y = (y_dat.max() - y_dat.min()) / N_y
im = axis.imshow(gridded_data, origin='lower', interpolation='none',
norm=colors.LogNorm())
ff_x = FuncFormatter(lambda x, pos: '{:.3g}'.format((x * a_x) + x_dat.min()))
ff_y = FuncFormatter(lambda y, pos: '{:.3g}'.format((y * a_y) + y_dat.min()))
axis.xaxis.set_major_formatter(ff_x)
axis.yaxis.set_major_formatter(ff_y)
cb = plt.colorbar(im)
plt.xlabel('q \u2225')
plt.ylabel('q \u22A5')
plt.savefig('RSM.jpg', format='jpg', dpi=1000)
plt.show()
Vielen Dank,
Thommy