def motion(self,event): x_move = event.xdata y_move = event.ydata if opt !=2: if self.a0 == event.inaxes: # print("Moving through X-Y plot") # x, y = event.inaxes.transData.inverted().transform((event.x, event.y)) #transforma de coordenadas del Tkinker Canvas a coordenadas del matplotlib plot # print("Mouse position: (%s %s)" % (x, y)) x_lst = find_nearest(xy_pos_df.iloc[:,0],x_move) y_lst = find_nearest(xy_pos_df.iloc[:,1], y_move) # print(x_lst,y_lst) mouse_pos = xy_pos_df[(xy_pos_df.iloc[:, 0] == x_lst) & (xy_pos_df.iloc[:, 1] == y_lst)].index.tolist() # print(mouse_pos) self.a1.clear() self.a1.set_ylabel('Intensity [a.u.]') self.a1.set_xlabel('Wavelength [nm]') if len(mouse_pos) == 0: pass else: if opt == 0: self.a1.plot(wavel_df.iloc[:, 0], inten_df.iloc[mouse_pos, :].transpose(), '*') if opt == 1: # spectrum = np.column_stack((wavel_array,np.transpose(inten_array[mouse_pos,:]))) # np.asarray(wavel_array, inten_file.iloc[mouse_pos,:].transpose()) # w,I = spectrum_subplot(spectrum) clim = (350, 780) norm = plt.Normalize(*clim) wl = np.arange(clim[0], clim[1] + 1, 2) colorlist = list(zip(norm(wl), [wavelength_to_rgb(w) for w in wl])) spectralmap = matplotlib.colors.LinearSegmentedColormap.from_list("spectrum", colorlist) mouse_pos = mouse_pos[0] wavelengths = wavel_array #wavel_array[:, 0] spectrum = np.transpose(inten_array[mouse_pos, :]) plt.plot(wavel_array, spectrum, color='darkred') y = np.linspace(0, np.max(spectrum), 100) X, Y = np.meshgrid(wavelengths, y) extent = (np.min(wavelengths), np.max(wavelengths), np.min(y), np.max(y)) plt.imshow(X, clim=clim, extent=extent, cmap=spectralmap, aspect='auto') plt.xlabel('Wavelength [nm]') plt.ylabel('Intensity [a.u.]') plt.fill_between(wavelengths, spectrum, np.max(spectrum), color='w') # if opt == 3: # clim = (350, 780) # norm = plt.Normalize(*clim) # wl = np.arange(clim[0], clim[1] + 1, 2) # colorlist = list(zip(norm(wl), [wavelength_to_rgb(w) for w in wl])) # spectralmap = matplotlib.colors.LinearSegmentedColormap.from_list("spectrum", colorlist) # mouse_pos = mouse_pos[0] # wavelengths = wavel_array # wavel_array[:, 0] # spectrum = np.transpose(inten_array[mouse_pos, :]) # plt.plot(wavel_array, spectrum, color='darkred') # # y = np.linspace(0, np.max(spectrum), 100) # X, Y = np.meshgrid(wavelengths, y) # # extent = (np.min(wavelengths), np.max(wavelengths), np.min(y), np.max(y)) # # plt.imshow(X, clim=clim, extent=extent, cmap=spectralmap, aspect='auto') # plt.xlabel('Wavelength [nm]') # plt.ylabel('Intensity [a.u.]') # # plt.fill_between(wavelengths, spectrum, np.max(spectrum), color='w') else: self.a1.clear() self.a1.set_ylabel('Intensity [a.u.]') self.a1.set_xlabel('Wavelength [nm]') return
def motion(self, event): x_move = event.xdata y_move = event.ydata if opt == 0 or opt == 1: if self.a0 == event.inaxes: x_lst = find_nearest(xy_pos_df.iloc[:, 0], x_move) y_lst = find_nearest(xy_pos_df.iloc[:, 1], y_move) mouse_pos = xy_pos_df[(xy_pos_df.iloc[:, 0] == x_lst) & ( xy_pos_df.iloc[:, 1] == y_lst)].index.tolist() self.a1.clear() self.a1.set_ylabel('Intensity [a.u.]') self.a1.set_xlabel('Wavelength [nm]') if len(mouse_pos) == 0: pass else: if normalization: tmp = 1 / light_df.iloc[:] tmp[light_df.iloc[:] < 0.1] = 0 inten_norm = (inten_df.iloc[mouse_pos, :] * tmp).abs() # print(inten_norm) if opt == 0: self.a1.plot(wavel_df.iloc[:, 0], inten_norm.transpose(), '*') elif opt == 1: clim = (350, 780) norm = plt.Normalize(*clim) wl = np.arange(clim[0], clim[1] + 1, 2) colorlist = list( zip(norm(wl), [wavelength_to_rgb(w) for w in wl])) spectralmap = matplotlib.colors.LinearSegmentedColormap.from_list( "spectrum", colorlist) mouse_pos = mouse_pos[0] wavelengths = wavel_array spectrum = np.transpose(inten_norm) # print(spectrum) self.a1.plot(wavel_array, spectrum, color='darkred') # print(np.max(spectrum)) y = np.linspace(0, np.max(spectrum), 100) X, Y = np.meshgrid(wavelengths, y) extent = (np.min(wavelengths), np.max(wavelengths), np.min(y), np.max(y)) plt.imshow(X, clim=clim, extent=extent, cmap=spectralmap, aspect='auto') plt.xlabel('Wavelength [nm]') plt.ylabel('Intensity [a.u.]') plt.fill_between(wavelengths, spectrum, np.max(spectrum), color='w') if not normalization: if opt == 0: self.a1.plot( wavel_df.iloc[:, 0], inten_df.iloc[mouse_pos, :].transpose(), '*') elif opt == 1: clim = (350, 780) norm = plt.Normalize(*clim) wl = np.arange(clim[0], clim[1] + 1, 2) colorlist = list( zip(norm(wl), [wavelength_to_rgb(w) for w in wl])) spectralmap = matplotlib.colors.LinearSegmentedColormap.from_list( "spectrum", colorlist) mouse_pos = mouse_pos[0] wavelengths = wavel_array spectrum = np.transpose( inten_df.iloc[mouse_pos, :]) self.a1.plot(wavel_array, spectrum, color='darkred') y = np.linspace(0, np.max(spectrum), 100) X, Y = np.meshgrid(wavelengths, y) extent = (np.min(wavelengths), np.max(wavelengths), np.min(y), np.max(y)) plt.imshow(X, clim=clim, extent=extent, cmap=spectralmap, aspect='auto') plt.xlabel('Wavelength [nm]') plt.ylabel('Intensity [a.u.]') plt.fill_between(wavelengths, spectrum, np.max(spectrum), color='w') else: self.a1.clear() self.a1.set_ylabel('Intensity [a.u.]') self.a1.set_xlabel('Wavelength [nm]') return
# inten_dff = banda_panc_df.iloc[0].values - abs(back_df.iloc[689].values*0.1) inten_dff = inten_df.iloc[200].values # - abs(inten_df.iloc[500].values) lighta = light_dff[940:3500] intena = inten_dff[940:3500] # intend = intena/abs(lighta) inten = intena.transpose() from scipy.signal import savgol_filter yhat = savgol_filter(inten, 55, 3) plt.grid() clim = (350, 780) norm = plt.Normalize(*clim) wl = np.arange(clim[0], clim[1] + 1, 2) colorlist = list(zip(norm(wl), [wavelength_to_rgb(w) for w in wl])) spectralmap = matplotlib.colors.LinearSegmentedColormap.from_list( "spectrum", colorlist) wavel_array = wavel_dff.iloc[:, 0].values spectrum = yhat plt.plot(wavel_dff, spectrum, color='darkred') y = np.linspace(0, np.max(spectrum), 100) X, Y = np.meshgrid(wavel_array, y) extent = (np.min(wavel_array), np.max(wavel_array), np.min(y), np.max(y)) plt.imshow(X, clim=clim, extent=extent, cmap=spectralmap, aspect='auto') plt.xlabel('Longitud de onda [nm]', fontsize=20) plt.ylabel('Transmisión [u.a.]', fontsize=20) plt.ylim([0, 1]) plt.fill_between(wavel_array, spectrum, np.max(spectrum), color='w')