def H_angle_30_and_wind(): dirs = "../result_h/angle/angle_30_and_wind/" main_v.mkdir(dirs) for i, start in enumerate(start_list): print("****************** {}/{} *******************".format(i+1, M)) month_end = start_list_plus_1month[i+1] month_end = date(month_end//10000, (month_end%10000)//100, (month_end%10000)%100) - timedelta(days=1) end = start + month_end.day - 1 #angleデータの取得 _, _, _, data = main_v.main_data( start, start, span=30, get_columns=["hermert"], region=None, accumulate=False ) data.theta[data.R2<threshold_R2] = np.nan #地衡風平均の出力 _, _, _, data_w = main_v.main_data( start, end, span=30, get_columns=["w"], region=None, accumulate=True ) data_array = np.array(data_w) data_ave = np.nanmean(data_array, axis=0) data_ave = pd.DataFrame(data_ave) data_ave.columns = ["w_speed", "w_u", "w_v"] save_name = dirs + "angle_30_and_wind_" + str(start)[:6] + ".png" visualize.plot_map_multi( data_ave.loc[:, ["w_u", "w_v"]], data["theta"], data_type="type_non_wind", save_name=save_name, show=False, vmax=180, vmin=-180, cmap=cm_angle_2 ) print("\n")
def H_A_30_test(): dirs = "../result_h/A/A_30_test/" main_v.mkdir(dirs) for i, start in enumerate(start_list): print("****************** {}/{} *******************".format(i+1, M)) _, _, _, data = main_v.main_data( start, start, span=30, get_columns=["hermert"], region=None, accumulate=False ) save_name = dirs + str(start)[:6] + ".png" visualize.plot_map_once( data["A"], data_type="type_non_wind", save_name=save_name, show=False, vmax=None, vmin=None, cmap=plt.cm.jet ) print("\n")
def H_vec_mean_ocean_currents(): dirs = "../result_h/mean_vector/mean_ocean_currents/" main_v.mkdir(dirs) for i, start in enumerate(start_list): print("****************** {}/{} *******************".format(i+1, M)) _, _, _, data = main_v.main_data( start, start, span=30, get_columns=["hermert"], region=None, accumulate=False ) save_name = dirs + "mean_ocean_currents_" + str(start)[:6] + ".png" visualize.plot_map_once( data.loc[:, ["ocean_u", "ocean_v"]], data_type="type_wind", save_name=save_name, show=False, vmax=None, vmin=None, cmap=None ) print("\n")
def H_A_30_with_coef(): dirs = "../result_h/A/A_30_with_coef/" main_v.mkdir(dirs) df_latlon = pd.read_csv("../data/latlon_ex.csv") lon = df_latlon.Lon lat = df_latlon.Lat lon = np.array(lon) lat = np.array(lat) for i, start in enumerate(start_list): print("****************** {}/{} *******************".format(i+1, M)) _, _, _, data = main_v.main_data( start, start, span=30, get_columns=["hermert"], region=None, accumulate=False ) idx_low_coef = data[data.R2<threshold_R2].index data_low_coef = np.array([np.nan]*(145**2)) data_low_coef[idx_low_coef] = 1 data_low_coef1 = np.reshape(data_low_coef, (145,145), order="F") data_low_coef1 = np.ma.masked_invalid(data_low_coef1) data.A.loc[data.R2<threshold_R2] = np.nan data = np.array(data.A) data1 = np.reshape(data, (145,145), order="F") data1 = np.ma.masked_invalid(data1) save_name = dirs + str(start)[:6] + ".png" m = Basemap(lon_0=180, boundinglat=50, resolution='i', projection='npstere') fig = plt.figure(figsize=(6.5, 6.5)) x, y = m(lon, lat) x1 = np.reshape(x, (145,145), order="F") y1 = np.reshape(y, (145,145), order="F") dx1 = (x1[1,0]-x1[0,0])/2 dy1 = (y1[0,1]-y1[0,0])/2 x2 = np.linspace(x1[0,0], x1[144,0], 145) y2 = np.linspace(y1[0,0], y1[0,144], 145) xx, yy = np.meshgrid(x2, y2) xx, yy = xx.T, yy.T xx = np.hstack([xx, xx[:,0].reshape(145,1)]) xx_ex = np.vstack([xx, (xx[144,:] + (xx[1,0]-xx[0,0]))]) yy = np.vstack([yy, yy[0,:]]) yy_ex = np.hstack([(yy[:,0].reshape(146,1) + (yy[0,0]-yy[0,1])), yy]) m.drawcoastlines(color = '0.15') # m.plot(xx[144,0], yy[144,0], "bo") m.pcolormesh(xx_ex-dx1, yy_ex+dy1, data1, cmap=plt.cm.jet, vmax=0.025, vmin=0) m.colorbar(location='bottom') cm_brown = visualize.generate_cmap(["burlywood", "burlywood"]) m.pcolormesh(xx_ex-dx1, yy_ex+dy1, data_low_coef1, cmap=cm_brown) #plt.show() plt.savefig(save_name, dpi=900) plt.close() print("\n")
def H_angle_30(): dirs_original = "../result_h/angle/angle_30/" main_v.mkdir(dirs_original) dirs_h_coef = "../result_h/angle/angle_30_high_coef/" main_v.mkdir(dirs_h_coef) for i, start in enumerate(start_list): print("****************** {}/{} *******************".format(i+1, M)) _, _, _, data = main_v.main_data( start, start, span=30, get_columns=["hermert"], region=None, accumulate=False ) #angle_30 save_name_original = dirs_original + "angle_30_" + str(start)[:6] + ".png" visualize.plot_map_once( data["theta"], data_type="type_non_wind", save_name=save_name_original, show=False, vmax=180, vmin=-180, cmap=cm_angle_2 ) #angle_30_high_coef data.theta[data.R2<threshold_R2] = np.nan save_name = dirs_h_coef + "angle_30_high_coef_" + str(start)[:6] + ".png" visualize.plot_map_once( data["theta"], data_type="type_non_wind", save_name=save_name, show=False, vmax=180, vmin=-180, cmap=cm_angle_2 ) print("\n")
def H_A_by_day_30(): """ 基本的に古い方のA_by_day_30と変わらないが,こっちの方がちょっとだけ正確かも """ dirs = "../result_h/A/A_by_day_30/" main_v.mkdir(dirs) for i, start in enumerate(start_list): print("******************* {}/{} *******************".format(i+1, M)) month_end = start_list_plus_1month[i+1] month_end = date(month_end//10000, (month_end%10000)//100, (month_end%10000)%100) - timedelta(days=1) end = start + month_end.day - 1 date_ax, date_ax_str, skipping_date_str, data = main_v.main_data( start, end, span=30, get_columns=["ex_2"], region=None, accumulate=True ) data_array = np.array(data) data_ave = np.nanmean(data_array, axis=0) #A_by_dayなので0列目 data_ave = pd.DataFrame(data_ave[:, 0]) data_ave.columns = ["A_by_day"] save_name = dirs + "A_by_day_30_" + str(start)[:6] + ".png" visualize.plot_map_once( data_ave["A_by_day"], data_type="type_non_wind", save_name=save_name, show=False, vmax=0.025, vmin=None, cmap=plt.cm.jet ) print("\n")
def get_helmert_ocean_90(): dirs = "../data/csv_Helmert_ocean_90/" mkdir(dirs) start_list_plus_1month = start_list + [20170901] for i, start in enumerate(start_list): print("******************* {}/{} *******************".format(i+1, M)) month_end = start_list_plus_1month[i+1] month_end = date(month_end//10000, (month_end%10000)//100, (month_end%10000)%100) - timedelta(days=1) end = start + month_end.day - 1 #csv_Helmert_90の当該月のcsvを読み込む hermert_file_name = "../data/csv_Helmert_both_90/Helmert_both_90_" + str(start)[:6] + ".csv" helmert_90_data = pd.read_csv(hermert_file_name) #wデータの取得・整形 _, _, _, data_w = main_data( start, end, span=30, get_columns=["w"], region=None, accumulate=True ) data_array_w = np.array(data_w) data_ave_w = np.nanmean(data_array_w, axis=0) #iwデータの取得・整形 _, _, _, data_iw = main_data( start, end, span=30, get_columns=["iw"], region=None, accumulate=True ) data_array_iw = np.array(data_iw) print("\n") w_array = np.vstack((data_array_iw[:,:,1], data_array_iw[:,:,2])) ocean_array_u = np.array(helmert_90_data["ocean_u_90"]) ocean_array_v = np.array(helmert_90_data["ocean_v_90"]) ocean_array = np.hstack((ocean_array_u.reshape((-1,1)), ocean_array_v.reshape((-1,1)))) ocean_array = np.tile(ocean_array, (data_array_iw.shape[0],1,1)) ocean_array = np.vstack((ocean_array[:,:,0], ocean_array[:,:,1])) #print(ocean_array.shape) #print(w_array[:, 0].shape) Helmert = [] #for j in range(100): for j in range(145**2): print("j: {}".format(j)) #欠損データの処理 not_nan_idx = np.sum(np.isnan(data_array_iw[:, j, :]), axis=1)==False #print("\tnot_nan_idx: {}".format(not_nan_idx)) x = data_array_w[:, j, 1][not_nan_idx].reshape((-1,1)) y = data_array_w[:, j, 2][not_nan_idx].reshape((-1,1)) w = (w_array[:, j]-ocean_array[:, j])[np.tile(not_nan_idx, 2)].reshape((-1,1)) iw_u_ave = np.nanmean(data_array_iw[:, j, 1]) iw_v_ave = np.nanmean(data_array_iw[:, j, 2]) iw_u_ave_ocean = np.nanmean(data_array_iw[:, j, 1] - ocean_array_u[j]) iw_v_ave_ocean = np.nanmean(data_array_iw[:, j, 2] - ocean_array_v[j]) N_c = np.sum(not_nan_idx==True) if N_c <= 1: print("\tskipping for loop...") Helmert.append([np.nan, np.nan, np.nan, np.nan, N_c, np.nan, np.nan]) continue one_N = np.ones(N_c).reshape((-1,1)) zero_N = np.zeros(N_c).reshape((-1,1)) #D_1 = np.hstack((one_N, zero_N, x, -y)) #D_2 = np.hstack((zero_N, one_N, y, x)) D_1 = np.hstack((x, -y)) D_2 = np.hstack((y, x)) Dt = np.vstack((D_1, D_2)) #print(N_c, Dt, np.dot(Dt.T, Dt)) D_inv = np.linalg.inv(np.dot(Dt.T, Dt)) gamma = np.dot(D_inv, np.dot(Dt.T, w)) print("\t{}".format(gamma.shape)) A = np.sqrt(gamma[0]**2 + gamma[1]**2) theta = np.arctan2(gamma[1], gamma[0]) * 180/np.pi R_denominator = np.dot(w.T, w) - N_c*(iw_u_ave_ocean**2 + iw_v_ave_ocean**2) epsilon = w - np.dot(Dt, gamma) R_numerator = np.dot(epsilon.T, epsilon) R2 = 1 - (R_numerator/R_denominator)[0,0] #print("\t{}".format([A[0], theta[0], gamma[0,0], gamma[1,0], R2, N_c])) if N_c <= 20: Helmert.append([np.nan, np.nan, np.nan, np.nan, N_c, iw_u_ave_ocean, iw_v_ave_ocean]) else: Helmert.append([A, theta, R2, R_numerator, N_c, iw_u_ave_ocean, iw_v_ave_ocean]) result = np.hstack((Helmert, data_ave_w[:,[1,2]])) #print(result.shape) data = pd.DataFrame(result) data.columns = ["A_30_90", "theta_30_90", "R2_30_90", "epsilon2_30_90", "N_c_30_90", "mean_iw_u_with_ocean_30_90", "mean_iw_v_with_ocean_30_90", "mean_w_u_30", "mean_w_v_30"] data_ex_dir = "../data/csv_Helmert_ex/Helmert_ex_" + str(start)[:-2] + ".csv" data_ = pd.read_csv(data_ex_dir).loc[:, ["coastal_region_1", "coastal_region_2", "area_label", "ic0_30", "ic0_30_median", "sit_30", "sit_30_median"]] data = pd.concat([latlon_ex, data_, data], axis=1) #print(data.head(3)) save_name = dirs + "Helmert_30_90_" + str(start)[:6] + ".csv" print(save_name) data.to_csv(save_name, index=False)
def get_helmert_both_90(data_ex_basic): dirs = "../data/csv_Helmert_both_90/" mkdir(dirs) #start_list = [20030101] start_list_plus_3month = start_list + [20170901, 20171001, 20171101] for k, start_1 in enumerate(start_list): if start_1 == 20170801: print("Breaking the loop...") break print("******************* {}/{} *******************".format(k+1, M)) if k == 0: month_end_1 = start_list_plus_3month[k+1] month_end_1 = date(month_end_1//10000, (month_end_1%10000)//100, (month_end_1%10000)%100) - timedelta(days=1) end_1 = start_1 + month_end_1.day - 1 start_2 = month_end_1 + timedelta(days=1) month_end_2 = start_list_plus_3month[k+2] month_end_2 = date(month_end_2//10000, (month_end_2%10000)//100, (month_end_2%10000)%100) - timedelta(days=1) end_2 = start_2 + timedelta(days=month_end_2.day-1) start_2 = int(start_2.strftime('%Y/%m/%d').replace("/", "")) end_2 = int(end_2.strftime('%Y/%m/%d').replace("/", "")) start_list_3month = [start_1, start_2, 0] end_list_3month = [end_1, end_2, 0] else: kk = k - 1 start_1_1 = start_list[kk] month_end_1 = start_list_plus_3month[kk+1] month_end_1 = date(month_end_1//10000, (month_end_1%10000)//100, (month_end_1%10000)%100) - timedelta(days=1) end_1 = start_1_1 + month_end_1.day - 1 start_2 = month_end_1 + timedelta(days=1) month_end_2 = start_list_plus_3month[kk+2] month_end_2 = date(month_end_2//10000, (month_end_2%10000)//100, (month_end_2%10000)%100) - timedelta(days=1) end_2 = start_2 + timedelta(days=month_end_2.day-1) start_3 = month_end_2 + timedelta(days=1) month_end_3 = start_list_plus_3month[kk+3] month_end_3 = date(month_end_3//10000, (month_end_3%10000)//100, (month_end_3%10000)%100) - timedelta(days=1) end_3 = start_3 + timedelta(days=month_end_3.day-1) start_2 = int(start_2.strftime('%Y/%m/%d').replace("/", "")) start_3 = int(start_3.strftime('%Y/%m/%d').replace("/", "")) end_2 = int(end_2.strftime('%Y/%m/%d').replace("/", "")) end_3 = int(end_3.strftime('%Y/%m/%d').replace("/", "")) start_list_3month = [start_1_1, start_2, start_3] end_list_3month = [end_1, end_2, end_3] data_w_90 = np.zeros((1, 145**2, 3)) data_iw_90 = np.zeros((1, 145**2, 3)) for i in range(3): start = start_list_3month[i] end = end_list_3month[i] if start == 0 and end == 0: continue #wデータの取得・整形 _, _, _, data_w = main_data( start, end, span=30, get_columns=["w"], region=None, accumulate=True ) data_array_w = np.array(data_w) #data_ave_w = np.nanmean(data_array_w, axis=0) data_w_90 = np.concatenate([data_w_90, data_array_w], axis=0) #iwデータの取得・整形 _, _, _, data_iw = main_data( start, end, span=30, get_columns=["iw"], region=None, accumulate=True ) data_array_iw = np.array(data_iw) data_iw_90 = np.concatenate([data_iw_90, data_array_iw], axis=0) print("\n") data_w_90 = data_w_90[1:, :, :] data_iw_90 = data_iw_90[1:, :, :] data_ave_w = np.nanmean(data_w_90, axis=0) data_ave_iw = np.nanmean(data_iw_90, axis=0) w_array = np.vstack((data_iw_90[:,:,1], data_iw_90[:,:,2])) Helmert = [] for j in range(145**2): print("j: {}".format(j)) #欠損データの処理 not_nan_idx = np.sum(np.isnan(data_iw_90[:, j, :]), axis=1)==False #print("\tnot_nan_idx: {}".format(not_nan_idx)) x = data_w_90[:, j, 1][not_nan_idx].reshape((-1,1)) y = data_w_90[:, j, 2][not_nan_idx].reshape((-1,1)) w = w_array[:, j][np.tile(not_nan_idx, 2)].reshape((-1,1)) iw_u_ave = np.nanmean(data_iw_90[:, j, 1]) iw_v_ave = np.nanmean(data_iw_90[:, j, 2]) N_c = np.sum(not_nan_idx==True) if N_c <= 1: print("\tskipping for loop...") Helmert.append([np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, N_c, np.nan, np.nan]) continue one_N = np.ones(N_c).reshape((-1,1)) zero_N = np.zeros(N_c).reshape((-1,1)) D_1 = np.hstack((one_N, zero_N, x, -y)) D_2 = np.hstack((zero_N, one_N, y, x)) Dt = np.vstack((D_1, D_2)) #print(N_c, Dt, np.dot(Dt.T, Dt)) D_inv = np.linalg.inv(np.dot(Dt.T, Dt)) gamma = np.dot(D_inv, np.dot(Dt.T, w)) A = np.sqrt(gamma[2]**2 + gamma[3]**2) theta = np.arctan2(gamma[3], gamma[2]) * 180/np.pi R_denominator = np.dot(w.T, w) - N_c*(iw_u_ave**2 + iw_v_ave**2) epsilon = w - np.dot(Dt, gamma) R_numerator = np.dot(epsilon.T, epsilon) R2 = 1 - (R_numerator/R_denominator)[0,0] print("\t{}".format([A[0], theta[0], gamma[0,0], gamma[1,0], R2, N_c])) if N_c < 45: Helmert.append([np.nan, np.nan, gamma[0], gamma[1], np.nan, np.nan, N_c, iw_u_ave, iw_v_ave]) else: Helmert.append([A, theta, gamma[0], gamma[1], R2, R_numerator, N_c, iw_u_ave, iw_v_ave]) result = np.hstack((Helmert, data_ave_w[:,[1,2]])) #print(result.shape) data = pd.DataFrame(result) data.columns = ["A_90", "theta_90", "ocean_u_90", "ocean_v_90", "R2_90", "epsilon2_90", "N_c_90", "mean_iw_u_90", "mean_iw_v_90", "mean_w_u_90", "mean_w_v_90"] data["ocean_speed_90"] = np.sqrt(data["ocean_u_90"]**2 + data["ocean_v_90"]**2) #print(data.head(3)) data = pd.concat([latlon_ex, data_ex_basic, data], axis=1) save_name = dirs + "Helmert_both_90_" + str(start_1)[:6] + ".csv" print(save_name) data.to_csv(save_name, index=False)
def get_csv_ex(array_label, array_coastal_region_1, array_coastal_region_2): data_ex_dir = "../data/csv_Helmert_ex/" mkdir(data_ex_dir) dirs_pair = "../result_h/pairplot/" mkdir(dirs_pair) for i, start in enumerate(start_list): print("****************** {}/{} *******************".format( i + 1, M)) month_end = start_list_plus_1month[i + 1] month_end = date(month_end // 10000, (month_end % 10000) // 100, (month_end % 10000) % 100) - timedelta(days=1) end = start + month_end.day - 1 _, _, _, data_ic0_30 = main_data(start, end, span=30, get_columns=["ic0_145"], region=None, accumulate=True) data_array_ic0 = np.array(data_ic0_30) data_ave_ic0 = np.nanmean(data_array_ic0, axis=0).ravel() data_med_ic0 = np.nanmedian(data_array_ic0, axis=0).ravel() data_ic0_ave_med_30 = pd.DataFrame({ "ic0_30": data_ave_ic0, "ic0_30_median": data_med_ic0 }) _, _, _, data_sit_30 = main_data(start, end, span=30, get_columns=["sit_145"], region=None, accumulate=True) data_array_sit = np.array(data_sit_30) data_ave_sit = np.nanmean(data_array_sit, axis=0).ravel() data_med_sit = np.nanmedian(data_array_sit, axis=0).ravel() data_sit_ave_med_30 = pd.DataFrame({ "sit_30": data_ave_sit, "sit_30_median": data_med_sit }) _, _, _, data_A_original = main_data(start, start, span=30, get_columns=["hermert"], region=None, accumulate=False) data_A_original["mean_ocean_speed"] = np.sqrt( data_A_original["ocean_u"]**2 + data_A_original["ocean_v"]**2) data_A_original["mean_iw_speed"] = np.sqrt( data_A_original["mean_iw_u"]**2 + data_A_original["mean_iw_v"]**2) data_A_original["mean_w_speed"] = np.sqrt( data_A_original["mean_w_u"]**2 + data_A_original["mean_w_v"]**2) data_A_original["w_iw_ratio"] = data_A_original[ "mean_iw_speed"] / data_A_original["mean_w_speed"] data_A_original["mean_iw_speed_no_ocean"] = np.sqrt( (data_A_original["mean_iw_u"] - data_A_original["ocean_u"])**2 + (data_A_original["mean_iw_v"] - data_A_original["ocean_v"])**2) data = pd.concat([ latlon_ex, data_A_original, data_ic0_ave_med_30, data_sit_ave_med_30 ], axis=1) #data["t_ocean"] = t_ocean #data["t_iw"] = t_iw #print(len(data)) #print(array_coastal_region_1.shape) data["coastal_region_1"] = array_coastal_region_1 data["coastal_region_2"] = array_coastal_region_2 data["area_label"] = array_label #print("\n\n{}\n".format(data.head(3))) data_name = data_ex_dir + "Helmert_ex_" + str(start)[:-2] + ".csv" data.to_csv(data_name, index=False) data_no_nan = data_A_original.dropna() sns.pairplot( data_no_nan.loc[:, ["A", "R2", "epsilon2", "mean_ocean_speed"]]) plt.savefig(dirs_pair + "ocean_" + str(start)[:-2] + ".png") plt.close() sns.pairplot(data_no_nan.loc[:, ["A", "R2", "epsilon2", "mean_iw_speed"]]) plt.savefig(dirs_pair + "iw_" + str(start)[:-2] + ".png") plt.close() sns.pairplot(data_no_nan.loc[:, ["A", "R2", "epsilon2", "w_iw_ratio"]]) plt.savefig(dirs_pair + "ratio_" + str(start)[:-2] + ".png") plt.close() sns.pairplot( data_no_nan.loc[:, ["A", "R2", "epsilon2", "mean_iw_speed_no_ocean"]]) plt.savefig(dirs_pair + "iw_no_ocean_" + str(start)[:-2] + ".png") plt.close() sns.pairplot(data_no_nan.loc[:, [ "mean_iw_speed", "mean_w_speed", "mean_ocean_speed", "mean_iw_speed_no_ocean" ]]) plt.savefig(dirs_pair + "speed_" + str(start)[:-2] + ".png") plt.close() print("\n")
def H_scatter_ic0_np(mode): if mode == "mean": dirs_A_30_and_ic0_np = "../result_h/scatter/scatter_A_30_and_ic0_np/" mkdir(dirs_A_30_and_ic0_np) dirs_A_30_and_ic0_h_np = "../result_h/scatter/scatter_A_30_and_ic0_h_np/" mkdir(dirs_A_30_and_ic0_h_np) dirs_angle_30_and_ic0_np = "../result_h/scatter/scatter_angle_30_and_ic0_np/" mkdir(dirs_angle_30_and_ic0_np) dirs_angle_30_and_ic0_h_np = "../result_h/scatter/scatter_angle_30_and_ic0_h_np/" mkdir(dirs_angle_30_and_ic0_h_np) elif mode == "median": dirs_A_30_and_ic0_median_np = "../result_h/scatter/scatter_A_30_and_ic0_median_np/" mkdir(dirs_A_30_and_ic0_median_np) dirs_A_30_and_ic0_median_h_np = "../result_h/scatter/scatter_A_30_and_ic0_median_h_np/" mkdir(dirs_A_30_and_ic0_median_h_np) dirs_angle_30_and_ic0_median_np = "../result_h/scatter/scatter_angle_30_and_ic0_median_np/" mkdir(dirs_angle_30_and_ic0_median_np) dirs_angle_30_and_ic0_median_h_np = "../result_h/scatter/scatter_angle_30_and_ic0_median_h_np/" mkdir(dirs_angle_30_and_ic0_median_h_np) for i, start in enumerate(start_list): print("****************** {}/{} *******************".format( i + 1, M)) month_end = start_list_plus_1month[i + 1] month_end = date(month_end // 10000, (month_end % 10000) // 100, (month_end % 10000) % 100) - timedelta(days=1) end = start + month_end.day - 1 _, _, _, data_A_original = main_data(start, start, span=30, get_columns=["hermert"], region=None, accumulate=False) _, _, _, data_ic0_30 = main_data(start, end, span=30, get_columns=["ic0_145"], region=None, accumulate=True) data_array = np.array(data_ic0_30) if mode == "mean": data_ave = np.nanmean(data_array, axis=0) data_ave = pd.DataFrame(data_ave) data_ave.columns = ["ic0_30"] #dirs_A_30_and_ic0_np data_A = data_A_original["A"] data = pd.concat([latlon_ex, data_A, data_ave], axis=1) data = data[data.Name == "north_polar"] save_name = dirs_A_30_and_ic0_np + str(start)[:6] + ".png" visualize.visual_non_line(data, mode=["scatter", ["ic0_30", "A"]], save_name=save_name, show=False) #dirs_A_30_and_ic0_h_np """ data_A_1 = data_A_original.loc[:, ["A", "R2"]] data_A_1.A[data_A_1.R2<threshold_R2] = np.nan data_1 = pd.concat([latlon_ex, data_A_1, data_ave], axis=1) data_1 = data_1[data_1.Name=="north_polar"] save_name = dirs_A_30_and_ic0_h_np + str(start)[:6] + ".png" visualize.visual_non_line( data_1, mode=["scatter", ["ic0_30", "A"]], save_name=save_name, show=False ) """ #dirs_angle_30_and_ic0_np data_angle = data_A_original["theta"] data_2 = pd.concat([latlon_ex, data_angle, data_ave], axis=1) data_2 = data_2[data_2.Name == "north_polar"] save_name = dirs_angle_30_and_ic0_np + str(start)[:6] + ".png" visualize.visual_non_line(data_2, mode=["scatter", ["ic0_30", "theta"]], save_name=save_name, show=False) #dirs_angle_30_and_ic0_h_np """ data_angle_1 = data_A_original.loc[:, ["theta", "R2"]] data_angle_1.theta[data_angle_1.R2<threshold_R2] = np.nan data_3 = pd.concat([latlon_ex, data_angle_1, data_ave], axis=1) data_3 = data_3[data_3.Name=="north_polar"] save_name = dirs_angle_30_and_ic0_h_np + str(start)[:6] + ".png" visualize.visual_non_line( data_3, mode=["scatter", ["ic0_30", "theta"]], save_name=save_name, show=False ) """ elif mode == "median": data_ave = np.nanmedian(data_array, axis=0) data_ave = pd.DataFrame(data_ave) data_ave.columns = ["ic0_30"] #dirs_A_30_and_ic0_np data_A = data_A_original["A"] data = pd.concat([latlon_ex, data_A, data_ave], axis=1) data = data[data.Name == "north_polar"] save_name = dirs_A_30_and_ic0_median_np + str(start)[:6] + ".png" visualize.visual_non_line(data, mode=["scatter", ["ic0_30", "A"]], save_name=save_name, show=False) #dirs_A_30_and_ic0_h_np """ data_A_1 = data_A_original.loc[:, ["A", "R2"]] data_A_1.A[data_A_1.R2<threshold_R2] = np.nan data_1 = pd.concat([latlon_ex, data_A_1, data_ave], axis=1) data_1 = data_1[data_1.Name=="north_polar"] save_name = dirs_A_30_and_ic0_median_h_np + str(start)[:6] + ".png" visualize.visual_non_line( data_1, mode=["scatter", ["ic0_30", "A"]], save_name=save_name, show=False ) """ #dirs_angle_30_and_ic0_np data_angle = data_A_original["theta"] data_2 = pd.concat([latlon_ex, data_angle, data_ave], axis=1) data_2 = data_2[data_2.Name == "north_polar"] save_name = dirs_angle_30_and_ic0_median_np + str( start)[:6] + ".png" visualize.visual_non_line(data_2, mode=["scatter", ["ic0_30", "theta"]], save_name=save_name, show=False) #dirs_angle_30_and_ic0_h_np """ data_angle_1 = data_A_original.loc[:, ["theta", "R2"]] data_angle_1.theta[data_angle_1.R2<threshold_R2] = np.nan data_3 = pd.concat([latlon_ex, data_angle_1, data_ave], axis=1) data_3 = data_3[data_3.Name=="north_polar"] save_name = dirs_angle_30_and_ic0_median_h_np + str(start)[:6] + ".png" visualize.visual_non_line( data_3, mode=["scatter", ["ic0_30", "theta"]], save_name=save_name, show=False ) """ print("\n")
def H_scatter_6win_2area(worker): dirs_basic = "../result_h/scatter/" if worker == 0: dirs_A_ic0 = dirs_basic + "A_ic0/" mkdir(dirs_A_ic0) dirs_theta_ic0 = dirs_basic + "theta_ic0/" mkdir(dirs_theta_ic0) dirs_e2_ic0 = dirs_basic + "e2_ic0/" mkdir(dirs_e2_ic0) elif worker == 1: dirs_A_sit = dirs_basic + "A_sit/" mkdir(dirs_A_sit) dirs_theta_sit = dirs_basic + "theta_sit/" mkdir(dirs_theta_sit) dirs_e2_sit = dirs_basic + "e2_sit/" mkdir(dirs_e2_sit) sns.set_style("darkgrid") for i, start in enumerate(start_list): print("****************** {}/{} *******************".format( i + 1, M)) month_end = start_list_plus_1month[i + 1] month_end = date(month_end // 10000, (month_end % 10000) // 100, (month_end % 10000) % 100) - timedelta(days=1) end = start + month_end.day - 1 _, _, _, data_hermert = main_data(start, start, span=30, get_columns=["hermert"], region=None, accumulate=False) _, _, _, data_ic0_sit = main_data(start, end, span=30, get_columns=["ic0_145", "sit_145"], region=None, accumulate=True) data_array = np.array(data_ic0_sit) data_ave = np.nanmean(data_array, axis=0) data_ave = pd.DataFrame(data_ave) data_ave.columns = ["ic0_30", "sit_30"] data_cross = data_array[:, :, 0] * data_array[:, :, 1] data_cross_ave = np.nanmean(data_cross, axis=0) / 100 data_ave["cross_ic0_sit"] = data_cross_ave data_tmp = data_hermert.loc[:, ["A", "theta", "R2", "epsilon2"]] data_basic = pd.concat([latlon_ex, data_tmp, data_ave], axis=1) rank_np = np.zeros(145**2) rank_np[data_basic[data_basic.Name == "north_polar"].index] = 1 rank_R2 = np.ones(145**2) rank_R2[data_basic[data_basic.R2 <= (0.5)**2].index] = 0 rank_R2[data_basic[data_basic.R2 > (0.6)**2].index] = 2 data_rank = pd.DataFrame({"rank_np": rank_np, "rank_R2": rank_R2}) data = pd.concat([data_basic, data_rank], axis=1) if worker == 0: save_name = dirs_A_ic0 + str(start)[:6] + ".png" sns.lmplot(x="ic0_30", y="A", row="rank_R2", col="rank_np", data=data, size=3, fit_reg=True) plt.savefig(save_name, dpi=900) plt.close() save_name = dirs_theta_ic0 + str(start)[:6] + ".png" sns.lmplot(x="ic0_30", y="theta", row="rank_R2", col="rank_np", data=data, size=3) plt.savefig(save_name, dpi=900) plt.close() save_name = dirs_e2_ic0 + str(start)[:6] + ".png" sns.lmplot(x="ic0_30", y="epsilon2", row="rank_R2", col="rank_np", data=data, size=3) plt.savefig(save_name, dpi=900) plt.close() elif worker == 1: save_name = dirs_A_sit + str(start)[:6] + ".png" sns.lmplot(x="sit_30", y="A", row="rank_R2", col="rank_np", data=data, size=3) plt.savefig(save_name, dpi=900) plt.close() save_name = dirs_theta_sit + str(start)[:6] + ".png" sns.lmplot(x="sit_30", y="theta", row="rank_R2", col="rank_np", data=data, size=3) plt.savefig(save_name, dpi=900) plt.close() save_name = dirs_e2_sit + str(start)[:6] + ".png" sns.lmplot(x="sit_30", y="epsilon2", row="rank_R2", col="rank_np", data=data, size=3) plt.savefig(save_name, dpi=900) plt.close() print("\n")