dat6.BSP = dat6.BSP / fit.beta[0] merge.BSP = merge.BSP / fit.beta[0] fig = dat6.plot_speeds(t1=(10,24,00), t2=(10,38,59)) axs = fig.get_axes() axs[0].legend(loc = 'lower left') axs[1].legend(loc = 'upp right') plt.draw() plt.savefig(plotpath + 'Kalibrationsfahrt.png') # require almost const speed smoothedBSP = NX2.smooth_gauss(merge.BSP, 3.) smoothedTWA = NX2.smooth_gauss(np.abs(merge.TWA), 3.) smoothedTWS = NX2.smooth_gauss(merge.TWS, 3.) index = (abs(np.diff(smoothedTWS)) < 0.01) # careful! n-1 elements! see below # index = np.hstack((index, [False])) fig, polar = plot_polar(smoothedTWA[index], smoothedTWS[index], smoothedBSP[index]) def plot_polar(angle, wind, bsp, fct = np.median): fig = plt.figure() fig.canvas.set_window_title('Polardiagramm') ax = fig.add_subplot(111, polar = True) color = ['r', 'g', 'b', 'y', 'k', 'c', 'orange'] speedbins = np.array([0.,2.,4.,6.,8.,10.,12.]) #make bins slightly larger than 15., so that 180. is part of last bin anglebins = np.arange(0., 181., 15.001)
anglebins = np.arange(0., 181., 15.001) digawa = np.digitize(np.abs(dat.AWA),anglebins) bsp = np.zeros([max(digaws)+1,max(digawa)+1]) for i in np.arange(1,len(twsbins)): for j in np.arange(1,len(anglebins)): bsp[i,j] = np.median(dat.BSP[(dat.sailing ==1)&(digaws==i)&(digawa==j)]) plt.polar(np.deg2rad(anglebins[0:-1]+np.diff(anglebins)/2.), bsp[i,1:], color = color[i], lw = 3, label='{0:3.1f}-{1:3.1f} kn'.format(twsbins[i-1], twsbins[i])) plt.legend(loc = 4) plt.title('Polardigramm - scheinbarer Wind') plt.savefig(plotpath +'/Polardiagram_AW.png') dat = merge.where(merge.LON < 500.) dat.BSP = NX2.smooth_gauss(dat.BSP, 5.) dat.TWS = NX2.smooth_gauss(dat.TWS, 5.) dat.TWA = NX2.smooth_gauss(dat.TWA, 5.) sailing = NX2.smooth_gauss(np.array(dat.sailing, dtype = np.float), 30.) con3 = (abs(np.diff(dat.BSP)) < 0.05) # careful! n-1 elements! myl = con3.tolist() myl.append([True]) con3 = np.array(myl) con2 = (abs(np.diff(dat.TWA)) < .5) # careful! n-1 elements! myl = con2.tolist() myl.append([True]) con2 = np.array(myl) con1 = (abs(np.diff(dat.TWS)) < 0.05) # careful! n-1 elements!