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_A_and_theta_by_year(): A_by_year_list = ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"] dirs_A = "../result_h/A/A_by_year/" main_v.mkdir(dirs_A) dirs_theta = "../result_h/theta/theta_by_year/" main_v.mkdir(dirs_theta) for item in A_by_year_list: fname = "../data/csv_Helmert_by_year/Helmert_by_year_" + item + ".csv" df_coeffs = pd.read_csv(fname, sep=',', dtype='float32') save_name_A = dirs_A + "Hermert_" + item + ".png" visualize.plot_map_once( df_coeffs["A"], data_type="type_non_wind", save_name=save_name_A, show=False, vmax=0.025, vmin=0, cmap=plt.cm.jet ) save_name_theta = dirs_theta + "Hermert_" + item + ".png" visualize.plot_map_once( df_coeffs["theta"], data_type="type_non_wind", save_name=save_name_theta, show=False, vmax=180, vmin=-180, cmap=cm_angle_2 ) print("\n")
def test_scatter(): mkdir("../result_h/test/test_scatter/") for i, start in enumerate(start_list): print("****************** {}/{} *******************".format(i+1, M)) data_ex_dir = "../data/csv_Helmert_ex/Helmert_ex_" + str(start)[:-2] + ".csv" data = pd.read_csv(data_ex_dir) #data_01 = [] try: #data_01 = data[((data.area_label==16)) & (data.coastal_region_1==False) & (data.ic0_30<99)].dropna() #data_01 = data[((data.area_label==8)|(data.area_label==10)) & (data.coastal_region_1==False) & (data.ic0_30<99)].dropna() #data_01 = data[((data.area_label==1)|(data.area_label==5)|(data.area_label==7)|(data.area_label==8)) & (data.coastal_region_1==False) & (data.ic0_30<99)].dropna() #data_01 = data.query('area_label in [1,4,5,7,10,11]')[(data.coastal_region_1==False) & (data.ic0_30<99)].dropna() data_01 = data[(data.area_label.isin([1,4,5,7,10,11])) & (data.coastal_region_1==False) & (data.ic0_30<99)].dropna() except: data_01 = pd.DataFrame([]) #print(data_01.head()) if len(data_01) >= 4: sns.jointplot(x="ic0_30", y="A", data=data_01, kind="reg") save_name = "../result_h/test/test_scatter/" + "A_ic0_" + str(start)[:-2] + ".png" plt.savefig(save_name, dpi=600) plt.close() """ visualize.visual_non_line( data, mode=["scatter", ["sit_30", "A"]], save_name=save_dir + str(start)[:6] + ".png", show=False ) """ print("\n")
def plot_hist(): mkdir("../result_h/search_anomaly/hist/") start_list.pop() for i, start in enumerate(start_list): print("****************** {}/{} *******************".format( i + 1, M - 1)) data_ex_dir = "../data/csv_Helmert_ex/Helmert_ex_" + str( start)[:-2] + ".csv" data = pd.read_csv(data_ex_dir) x = data.R2[((data.area_label == 16)) & ((data.A < 0.003) | (data.ic0_30 < 97))].dropna().values y = data.R2[((data.area_label == 16)) & ( (data.A >= 0.003) & (data.ic0_30 >= 97))].dropna().values sns.distplot(x, color="skyblue") sns.distplot(y, color="red") """ fig, ax = plt.subplots() for a in [x, y]: sns.distplot(a, ax=ax, kde=True) ax.set_xlim([0, 0.03]) """ save_name = "../result_h/search_anomaly/hist/" + "A_ic0_" + str( start)[:-2] + ".png" plt.savefig(save_name, dpi=600) plt.close() 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 test_scatter(): mkdir("../result_h/test/test_scatter/") for i, start in enumerate(start_list): print("****************** {}/{} *******************".format( i + 1, M)) data_ex_dir = "../data/csv_Helmert_ex/Helmert_ex_" + str( start)[:-2] + ".csv" data = pd.read_csv(data_ex_dir) #data01 = data.loc[data.coastal_region_1==0, :].dropna() data_01 = data[((data.area_label == 4) | (data.area_label == 5)) & (data.coastal_region_1 == False) & (data.ic0_30 < 99)].dropna() sns.jointplot(x="ic0_30", y="A", data=data_01, kind="reg") save_name = "../result_h/test/test_scatter/" + "A_ic0_" + str( start)[:-2] + ".png" plt.savefig(save_name, dpi=600) plt.close() """ visualize.visual_non_line( data, mode=["scatter", ["sit_30", "A"]], save_name=save_dir + str(start)[:6] + ".png", show=False ) """ 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 heatmap(): dirs = "../result_h/heatmap/" mkdir(dirs) start_list.pop() for i, start in enumerate(start_list): print("******************* {}/{} *******************".format( i + 1, M - 1)) #csv_Helmert_90の当該月のcsvを読み込む #hermert_file_name_90 = "../data/csv_Helmert_both_90/Helmert_both_90_" + str(start)[:6] + ".csv" #helmert_90_data = pd.read_csv(hermert_file_name_90) #csv_Helmert_30の当該月のcsvを読み込む hermert_file_name_30 = "../data/csv_Helmert_both_30/Helmert_both_30_" + str( start)[:6] + ".csv" helmert_30_data = pd.read_csv(hermert_file_name_30) #木村のcsvの読み込み(90) #coeff_file_name_90 = "../data/csv_A_90/ssc_amsr_ads" + str(start)[2:6] + "_90_fin.csv" #coeff_90_data = calc_data.get_1month_coeff_data(coeff_file_name_90) #木村のcsvの読み込み(30) #coeff_file_name_30 = "../data/csv_A_30/ssc_amsr_ads" + str(start)[2:6] + "_30_fin.csv" #coeff_30_data = calc_data.get_1month_coeff_data(coeff_file_name_30) helmert_30_data["cross_ic0_sit"] = helmert_30_data[ "ic0_30"] * helmert_30_data["sit_30"] / 100 helmert_30_data["ocean_speed"] = np.sqrt( helmert_30_data["ocean_u"]**2 + helmert_30_data["ocean_v"]**2) cr = [ 'A', 'theta', 'R2', 'epsilon2', 'ic0_30', 'sit_30', 'cross_ic0_sit', 'ocean_speed' ] cr_matrix = helmert_30_data.loc[helmert_30_data.area_label == 7, cr].corr() mask = np.zeros_like(cr_matrix, dtype=np.bool) mask[np.triu_indices_from(mask)] = True try: sns.set(font_scale=0.7) sns.heatmap(cr_matrix, mask=mask, cbar=True, annot=True, square=True, fmt='.2f', annot_kws={'size': 10}, yticklabels=cr, xticklabels=cr, cmap="bwr", vmin=-1, vmax=1) plt.savefig(dirs + "area_7_" + str(start)[:6] + ".png", dpi=450) plt.close() except: continue
def test_ocean_mean_iw_plot(): dirs = "../result_h/test/test_ocean/" 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_90 = "../data/csv_Helmert_both_90/Helmert_both_90_" + str( start)[:6] + ".csv" helmert_90_data = pd.read_csv(hermert_file_name_90).dropna() #csv_Helmert_30の当該月のcsvを読み込む hermert_file_name_30 = "../data/csv_Helmert_30/Helmert_30_" + str( start)[:6] + ".csv" helmert_30_data = pd.read_csv(hermert_file_name_30).dropna() #木村のcsvの読み込み(90) coeff_file_name_90 = "../data/csv_A_90/ssc_amsr_ads" + str( start)[2:6] + "_90_fin.csv" coeff_90_data = calc_data.get_1month_coeff_data( coeff_file_name_90).dropna() #木村のcsvの読み込み(30) coeff_file_name_30 = "../data/csv_A_30/ssc_amsr_ads" + str( start)[2:6] + "_30_fin.csv" coeff_30_data = calc_data.get_1month_coeff_data( coeff_file_name_30).dropna() ocean_90_h_u = helmert_90_data["ocean_u"].values ocean_90_h_v = helmert_90_data["ocean_v"].values ocean_90_h_speed = np.sqrt(ocean_90_h_u**2 + ocean_90_h_v**2) ocean_30_h_u = helmert_30_data["ocean_u"].values ocean_30_h_v = helmert_30_data["ocean_v"].values ocean_30_h_speed = np.sqrt(ocean_30_h_u**2 + ocean_30_h_v**2) ocean_90_c_u = coeff_90_data["mean_ocean_u"].values ocean_90_c_v = coeff_90_data["mean_ocean_v"].values ocean_90_c_speed = np.sqrt(ocean_90_c_u**2 + ocean_90_c_v**2) ocean_30_c_u = coeff_30_data["mean_ocean_u"].values ocean_30_c_v = coeff_30_data["mean_ocean_v"].values ocean_30_c_speed = np.sqrt(ocean_30_c_u**2 + ocean_30_c_v**2) fig, axes = plt.subplots(1, 2) axes[0].hist(ocean_90_c_speed / ocean_90_h_speed) axes[1].hist(ocean_30_c_speed / ocean_30_h_speed) plt.savefig(dirs + "hist_ocean_" + str(start)[:6] + ".png", dpi=450) plt.close()
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 get_helmert_both_30_modified(): dirs = "../data/csv_Helmert_both_30/" mkdir(dirs) for i, start in enumerate(start_list): print("******************* {}/{} *******************".format(i+1, M)) #csv_Helmert_30の当該月のcsvを読み込む hermert_file_name_30 = "../data/csv_Helmert_30/Helmert_30_" + str(start)[:6] + ".csv" helmert_30_data = pd.read_csv(hermert_file_name_30) data_ex_dir = "../data/csv_Helmert_ex/Helmert_ex_" + str(start)[:-2] + ".csv" data_ex = pd.read_csv(data_ex_dir) data = pd.concat([helmert_30_data, data_ex.loc[:, ["coastal_region_1", "coastal_region_2", "area_label", "ic0_30", "ic0_30_median", "sit_30", "sit_30_median"]]], axis=1) save_name = dirs + "Helmert_both_30_" + str(start)[:6] + ".csv" print(save_name) data.to_csv(save_name, index=False)
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 compare_3csv(): dirs = "../result_h/compare_3csv/" dirs_A = "../result_h/compare_3csv/A/" dirs_theta = "../result_h/compare_3csv/theta/" dirs_R2 = "../result_h/compare_3csv/R2/" dirs_e2 = "../result_h/compare_3csv/e2/" mkdir(dirs_A) mkdir(dirs_theta) mkdir(dirs_R2) mkdir(dirs_e2) kw_list = [["A", "A_30_90", "A_30_w_iw"], ["theta", "theta_30_90", "theta_w_iw"], ["R2", "R2_30_90", "R2_w_iw"], ["epsilon2", "epsilon2_30_90", "epsilon2_w_iw"]] for i, start in enumerate(start_list): print("****************** {}/{} *******************".format( i + 1, M)) helmert_30_30_fname = "../data/csv_Helmert_30/Helmert_30_" + str( start)[:6] + ".csv" data_30 = pd.read_csv(helmert_30_30_fname) helmert_30_90_fname = "../data/csv_Helmert_ocean_90/Helmert_30_90_" + str( start)[:6] + ".csv" data_90 = pd.read_csv(helmert_30_90_fname) helmert_30_30_w_iw_fname = "../data/csv_Helmert_both_30_w_iw/Helmert_both_30_w_iw_" + str( start)[:6] + ".csv" data_30_w_iw = pd.read_csv(helmert_30_30_w_iw_fname) save_name_list = ["A", "theta", "R2", "e2"] for j in range(4): data_30_plot = np.array(data_30[kw_list[j][0]]) data_90_plot = np.array(data_90[kw_list[j][1]]) data_30_w_iw_plot = np.array(data_30_w_iw[kw_list[j][2]]) data_list = [data_30_plot, data_90_plot, data_30_w_iw_plot] v_lim_list = [[0.025, 0], [180, -180], [1, 0], [None, 0]] fig, axes = plt.subplots(1, 3) for k in range(3): ax = axes[k] ax.set_title(kw_list[j][k]) m = Basemap(lon_0=180, boundinglat=50, resolution='l', projection='npstere') m.ax = ax m.drawcoastlines(color='0.15') m.fillcontinents(color='#555555') lon = np.array(latlon_ex.Lon) lat = np.array(latlon_ex.Lat) 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 ]) data = np.ma.masked_invalid(data_list[k]) data1 = np.reshape(data, (145, 145), order='F') im = m.pcolormesh(xx_ex - dx1, yy_ex + dy1, data1, cmap=plt.cm.jet, vmax=v_lim_list[j][0], vmin=v_lim_list[j][1]) fig.colorbar(im, ax=ax) #m.colorbar(location='bottom') save_name = dirs + save_name_list[j] + "/" + str( start)[:6] + ".png" print(save_name) plt.savefig(save_name, dpi=750) plt.close()
def scatter_ic0_by_csv(): csv_kind_list = ["csv_30_30", "csv_30_90", "csv_30_30_w_iw"] plot_y_list = ["A", "theta"] #plot_y_list = ["e2"] area_list = ["area_" + str(i) for i in range(17)] for csv_item in csv_kind_list: for plot_item in plot_y_list: for area_item in area_list: dirs = "../result_h/scatter/sit_by_csv/" + csv_item + "/" + plot_item + "/" + area_item + "/" mkdir(dirs) kw_y_list = [["A", "A_30_90", "A_30_w_iw"], ["theta", "theta_30_90", "theta_w_iw"]] #kw_y_list = [["epsilon2", "epsilon2_30_90", "epsilon2_30_w_iw"]] y_lim_list = [(0, 0.025), (-90, 90)] sns.set_style("darkgrid") for i, start in enumerate(start_list): print("****************** {}/{} *******************".format( i + 1, M)) helmert_30_30_fname = "../data/csv_Helmert_both_30/Helmert_both_30_" + str( start)[:6] + ".csv" data_30 = pd.read_csv(helmert_30_30_fname) helmert_30_90_fname = "../data/csv_Helmert_ocean_90/Helmert_30_90_" + str( start)[:6] + ".csv" data_90 = pd.read_csv(helmert_30_90_fname) helmert_30_30_w_iw_fname = "../data/csv_Helmert_both_30_w_iw/Helmert_both_30_w_iw_" + str( start)[:6] + ".csv" data_30_w_iw = pd.read_csv(helmert_30_30_w_iw_fname) for j, kw in enumerate(kw_y_list): for k, area_item in enumerate(area_list): try: save_name_30_30 = "../result_h/scatter/sit_by_csv/" + csv_kind_list[ 0] + "/" + plot_y_list[ j] + "/" + area_item + "/" + "lmplot_coastal_2_" + str( start)[:6] + ".png" lm = sns.lmplot(x="sit_30", y=kw[0], col="coastal_region_2", data=data_30[data_30["area_label"] == k], size=3, fit_reg=True) lm.set(ylim=y_lim_list[j]) plt.savefig(save_name_30_30, dpi=500) plt.close() except: print("Skipped plot: {}".format(csv_kind_list[0] + "/" + plot_y_list[j] + "/" + area_item)) plt.close() try: save_name_30_90 = "../result_h/scatter/sit_by_csv/" + csv_kind_list[ 1] + "/" + plot_y_list[ j] + "/" + area_item + "/" + "lmplot_coastal_2_" + str( start)[:6] + ".png" lm = sns.lmplot(x="sit_30", y=kw[1], col="coastal_region_2", data=data_90[data_90.area_label == k], size=3, fit_reg=True) lm.set(ylim=y_lim_list[j]) plt.savefig(save_name_30_90, dpi=500) plt.close() except: print("Skipped plot: {}".format(csv_kind_list[1] + "/" + plot_y_list[j] + "/" + area_item)) plt.close() try: save_name_30_30_w_iw = "../result_h/scatter/sit_by_csv/" + csv_kind_list[ 2] + "/" + plot_y_list[ j] + "/" + area_item + "/" + "lmplot_coastal_2_" + str( start)[:6] + ".png" lm = sns.lmplot( x="sit_30", y=kw[2], col="coastal_region_2", data=data_30_w_iw[data_30_w_iw.area_label == k], size=3, fit_reg=True) lm.set(ylim=y_lim_list[j]) plt.savefig(save_name_30_30_w_iw, dpi=500) plt.close() except: print("Skipped plot: {}".format(csv_kind_list[2] + "/" + plot_y_list[j] + "/" + area_item)) plt.close()
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 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")
def test_ocean_plot(): dirs = "../result_h/test/test_iw/" 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 try: #csv_Helmert_90の当該月のcsvを読み込む #hermert_file_name_90 = "../data/csv_Helmert_both_90/Helmert_both_90_" + str(start)[:6] + ".csv" #helmert_90_data = pd.read_csv(hermert_file_name_90) #csv_Helmert_30の当該月のcsvを読み込む hermert_file_name_30 = "../data/csv_Helmert_30/Helmert_30_" + str( start)[:6] + ".csv" helmert_30_data = pd.read_csv(hermert_file_name_30) #木村のcsvの読み込み(90) #coeff_file_name_90 = "../data/csv_A_90/ssc_amsr_ads" + str(start)[2:6] + "_90_fin.csv" #coeff_90_data = calc_data.get_1month_coeff_data(coeff_file_name_90) #木村のcsvの読み込み(30) coeff_file_name_30 = "../data/csv_A_30/ssc_amsr_ads" + str( start)[2:6] + "_30_fin.csv" coeff_30_data = calc_data.get_1month_coeff_data(coeff_file_name_30) except: continue #ocean_90_h_u = helmert_90_data["ocean_u_90"].values #ocean_90_h_v = helmert_90_data["ocean_v_90"].values #ocean_90_h_speed = np.sqrt(ocean_90_h_u**2 + ocean_90_h_v**2) ocean_30_h_u = helmert_30_data["ocean_u"].values ocean_30_h_v = helmert_30_data["ocean_v"].values ocean_30_h_speed = np.sqrt(ocean_30_h_u**2 + ocean_30_h_v**2) #ocean_90_c_u = coeff_90_data["mean_ocean_u"].values #ocean_90_c_v = coeff_90_data["mean_ocean_v"].values #ocean_90_c_speed = np.sqrt(ocean_90_c_u**2 + ocean_90_c_v**2) ocean_30_c_u = coeff_30_data["mean_ocean_u"].values ocean_30_c_v = coeff_30_data["mean_ocean_v"].values ocean_30_c_speed = np.sqrt(ocean_30_c_u**2 + ocean_30_c_v**2) """ fig, axes = plt.subplots(1, 2) ratio_90 = ocean_90_c_speed/ocean_90_h_speed ratio_30 = ocean_30_c_speed/ocean_30_h_speed axes[0].hist(ratio_30[ocean_idx][~np.isnan(ratio_30[ocean_idx])], range=(0,3), bins=150) axes[1].hist(ratio_90[ocean_idx][~np.isnan(ratio_90[ocean_idx])], range=(0,3), bins=150) """ ratio_w = ocean_30_c_u / ocean_30_h_u N_c_h = helmert_30_data["mean_iw_v"].values N_c_c = coeff_30_data["mean_ice_v"].values N_c_diff = N_c_h - N_c_c #plt.hist(N_c_diff[~np.isnan(N_c_diff)], range=(-5,5), bins=11, alpha=0.5) #tmp = N_c_diff[~np.isnan(N_c_diff)] #print(len(np.where(tmp>0)[0])) m = Basemap(lon_0=180, boundinglat=50, resolution='l', projection='npstere') m.drawcoastlines(color='0.15') m.fillcontinents(color='#555555') lon = np.array(latlon_ex.Lon) lat = np.array(latlon_ex.Lat) 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]) data = np.ma.masked_invalid(N_c_diff) data1 = np.reshape(data, (145, 145), order='F') m.pcolormesh(xx_ex - dx1, yy_ex + dy1, data1, cmap=plt.cm.jet, vmax=0.5, vmin=-0.5) #fig.colorbar(im, ax=ax) m.colorbar() #plt.hist(N_c_c[~np.isnan(N_c_c)], range=(20,35), bins=16) plt.savefig(dirs + "iw_v_" + str(start)[:6] + ".png", dpi=450) plt.close()
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 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 plot_anomaly_points(): dirs = "../result_h/A/anomaly_ic0/" mkdir(dirs) start_list.pop() for i, start in enumerate(start_list): print("****************** {}/{} *******************".format( i + 1, M - 1)) helmert_30_30_fname = "../data/csv_Helmert_both_30/Helmert_both_30_" + str( start)[:6] + ".csv" data_30 = pd.read_csv(helmert_30_30_fname) helmert_30_90_fname = "../data/csv_Helmert_ocean_90/Helmert_30_90_" + str( start)[:6] + ".csv" data_90 = pd.read_csv(helmert_30_90_fname) #anomaly_30 = data_30.loc[((data_30.A>=0.005)&(data_30.ic0_30>=97)), "A"] #anomaly_90 = data_90.loc[((data_90.A_30_90>=0.005)&(data_90.ic0_30>=97)), "A_30_90"] anomaly_bool_30 = (data_30.A >= 0.005) & (data_30.ic0_30 >= 97) data_30["anomaly"] = data_30.epsilon2[anomaly_bool_30] anomaly_bool_90 = (data_90.A_30_90 >= 0.005) & (data_90.ic0_30 >= 97) data_90["anomaly"] = data_90.epsilon2_30_90[anomaly_bool_90] fig, axes = plt.subplots(1, 2) data_list = [ np.array(data_30["anomaly"]), np.array(data_90["anomaly"]) ] for j in range(2): ax = axes[j] m = Basemap(lon_0=180, boundinglat=50, resolution='l', projection='npstere') m.ax = ax m.drawcoastlines(color='0.15') m.fillcontinents(color='#555555') lon = np.array(latlon_ex.Lon) lat = np.array(latlon_ex.Lat) 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 ]) data = np.ma.masked_invalid(data_list[j]) data1 = np.reshape(data, (145, 145), order='F') im = m.pcolormesh(xx_ex - dx1, yy_ex + dy1, data1, cmap=plt.cm.jet, vmax=1, vmin=0) fig.colorbar(im, ax=ax) #m.colorbar(location='bottom') save_name = dirs + str(start)[:6] + ".png" print(save_name) plt.savefig(save_name, dpi=500) plt.close()
def ocean_30_vs_90(): dirs = "../result_h/mean_vector/ocean_currents_30_vs_90/" mkdir(dirs) start_list.pop() for i, start in enumerate(start_list): print("****************** {}/{} *******************".format( i + 1, M)) helmert_30_30_fname = "../data/csv_Helmert_30/Helmert_30_" + str( start)[:6] + ".csv" data_30 = pd.read_csv(helmert_30_30_fname) data_30_vec = [ np.array(data_30["ocean_u"]), np.array(data_30["ocean_v"]) ] helmert_90_90_fname = "../data/csv_Helmert_both_90/Helmert_both_90_" + str( start)[:6] + ".csv" data_90 = pd.read_csv(helmert_90_90_fname) data_90_vec = [ np.array(data_90["ocean_u_90"]), np.array(data_90["ocean_v_90"]) ] helmert_30_30_w_iw_fname = "../data/csv_Helmert_both_30_w_iw/Helmert_both_30_w_iw_" + str( start)[:6] + ".csv" data_30_w_iw = pd.read_csv(helmert_30_30_w_iw_fname) data_30_w_iw_vec = [ np.array(data_30_w_iw["ocean_u_w_iw"]), np.array(data_30_w_iw["ocean_v_w_iw"]) ] fig, axes = plt.subplots(1, 3) fig.figsize = (6, 9) title_list = ["30", "90", "30_w_iw"] vector_list = [data_30_vec, data_90_vec, data_30_w_iw_vec] for j, title in enumerate(title_list): ax = axes[j] ax.set_title(title) m = Basemap(lon_0=180, boundinglat=50, resolution='l', projection='npstere') m.ax = ax m.drawcoastlines(color='0.15') m.fillcontinents(color='#555555') lon = np.array(latlon_ex.Lon) lat = np.array(latlon_ex.Lat) 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 vector_u = np.ma.masked_invalid(vector_list[j][0]) vector_v = np.ma.masked_invalid(vector_list[j][1]) vector_speed = np.sqrt(vector_u * vector_u + vector_v * vector_v) data_non_wind = vector_speed data_non_wind = np.ma.masked_invalid(data_non_wind) data1 = np.reshape(data_non_wind, (145, 145), order='F') 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.pcolormesh(xx_ex - dx1, yy_ex + dy1, data1, cmap=plt.cm.jet, vmax=0.2, vmin=0) #m.colorbar(location='bottom') m.quiver(x, y, vector_u, vector_v, color="k") save_name = dirs + str(start)[:6] + ".png" print(save_name) plt.savefig(save_name, dpi=750) plt.close() print("\n")
def H_ts_A_month(m_plot=True, y_plot=True): dirs_1g = "../result_h/H_ts_month_1g/" mkdir(dirs_1g) dirs_2g = "../result_h/H_ts_month_2g/" mkdir(dirs_2g) dirs_3g = "../result_h/H_ts_month_3g/" mkdir(dirs_3g) dirs_year = "../result_h/H_ts_year/" mkdir(dirs_year) def plot_param_1g(data_m_1g, save_name): fig, axes = plt.subplots(3, 1) dates = pd.date_range("2001", periods=12, freq='MS') plot_data_1g = data_m_1g["A"].loc[:, ["mean", "std", "50%"]] plot_data_1g["2sigma_pos"] = plot_data_1g['mean'] + 1 * np.sqrt( plot_data_1g['std']) plot_data_1g["2sigma_neg"] = plot_data_1g['mean'] - 1 * np.sqrt( plot_data_1g['std']) #plot_data_1g["Month"] = dates axes[0].plot(dates, plot_data_1g['mean'], '-', color="k") #d = plot_data_1g['Month'].values axes[0].fill_between(dates, plot_data_1g['2sigma_pos'], plot_data_1g['2sigma_neg'], facecolor='green', alpha=0.3, interpolate=True) #axes[0].set_ylim([0, 0.025]) axes[0].set_ylabel('A') #axes[0].set_title('A, ' + str_year) axes[0].xaxis.set_major_formatter(mdates.DateFormatter('%m')) plot_data_1g_theta = data_m_1g["theta"].loc[:, ["mean", "std", "50%"]] plot_data_1g_theta["2sigma_pos"] = plot_data_1g_theta[ 'mean'] + 2 * np.sqrt(plot_data_1g_theta['std']) plot_data_1g_theta["2sigma_neg"] = plot_data_1g_theta[ 'mean'] - 2 * np.sqrt(plot_data_1g_theta['std']) axes[1].plot(dates, plot_data_1g_theta['mean'], '-', color="k") axes[1].fill_between(dates, plot_data_1g_theta['2sigma_pos'], plot_data_1g_theta['2sigma_neg'], facecolor='lightskyblue', alpha=0.3, interpolate=True) #axes[1].set_ylim([-180, 180]) axes[1].set_ylim([-60, 60]) #axes[1].set_yticks([-180, -120, -60, 0, 60, 120, 180]) axes[1].set_ylabel('theta') #axes[1].set_title('theta, ' + str_year) axes[1].xaxis.set_major_formatter(mdates.DateFormatter('%m')) plot_data_1g_e2 = data_m_1g["epsilon2"].loc[:, ["mean", "std", "50%"]] plot_data_1g_e2["2sigma_pos"] = plot_data_1g_e2['mean'] + 2 * np.sqrt( plot_data_1g_e2['std']) plot_data_1g_e2["2sigma_neg"] = plot_data_1g_e2['mean'] - 2 * np.sqrt( plot_data_1g_e2['std']) axes[2].plot(dates, plot_data_1g_e2['mean'], '-', color="k") axes[2].fill_between(dates, plot_data_1g_e2['2sigma_pos'], plot_data_1g_e2['2sigma_neg'], facecolor='silver', alpha=0.3, interpolate=True) #axes[2].set_ylim([-180, 180]) #axes[2].set_yticks([-180, -120, -60, 0, 60, 120, 180]) axes[2].set_ylabel('e2') #axes[2].set_title('e2, ' + str_year) axes[2].xaxis.set_major_formatter(mdates.DateFormatter('%m')) #plt.setp(axes[0].get_xticklabels(), visible=False) #plt.setp(axes[1].get_xticklabels(), visible=False) plt.tight_layout() plt.savefig(save_name, dpi=900) plt.close() def plot_param_2g(data_m_2g, save_name): plot_param_list = ["A", "theta", "epsilon2"] fig, axes = plt.subplots(3, 2) dates = pd.date_range("2001", periods=12, freq='MS') axes[0, 0].set_title("Polar Region") axes[0, 1].set_title("Coastal Region") for i, item in enumerate(plot_param_list): for j, is_np in enumerate([1, 0]): plot_data_2g_np_pos = data_m_2g.loc[(is_np), (item, ["mean", "std", "50%"])] plot_data_2g_np_pos["2sigma_pos"] = plot_data_2g_np_pos[ (item, 'mean')] + 2 * np.sqrt(plot_data_2g_np_pos[(item, 'std')]) plot_data_2g_np_pos["2sigma_neg"] = plot_data_2g_np_pos[ (item, 'mean')] - 2 * np.sqrt(plot_data_2g_np_pos[(item, 'std')]) #plot_data_2g_np_pos["Month"] = np.arange(1, 13, 1) ax = axes[i, j] #plt.subplot(321+j+i*2) ax.plot_date(dates, plot_data_2g_np_pos[(item, 'mean')], '-', color="k") #d = plot_data_2g_np_pos['Month'].values ax.fill_between(dates, plot_data_2g_np_pos['2sigma_pos'], plot_data_2g_np_pos['2sigma_neg'], facecolor='lightskyblue', alpha=0.3, interpolate=True) if i == 0: ax.set_ylim([0, 0.025]) #ax.set_yticks([0, 0.025]) elif i == 1: ax.set_ylim([-180, 180]) ax.set_yticks([-180, -120, -60, 0, 60, 120, 180]) elif i == 2: ax.set_ylim([0, 1.5]) #ax.set_yticks([0, 0.025]) ax.xaxis.set_major_formatter(mdates.DateFormatter('%m')) axes[0, 0].set_ylabel('A') axes[1, 0].set_ylabel('theta') axes[2, 0].set_ylabel('e2') axes[2, 0].set_xlabel("Month") axes[2, 1].set_xlabel("Month") """ plt.setp(axes[0, 0].get_xticklabels(), visible=False) plt.setp(axes[1, 0].get_xticklabels(), visible=False) plt.setp(axes[0, 1].get_xticklabels(), visible=False) plt.setp(axes[1, 1].get_xticklabels(), visible=False) plt.setp(axes[0, 1].get_yticklabels(), visible=False) plt.setp(axes[1, 1].get_yticklabels(), visible=False) plt.setp(axes[2, 1].get_yticklabels(), visible=False) """ plt.tight_layout() plt.savefig(save_name, dpi=900) plt.close() def plot_param_3g(data_m_3g, plot_param_item, save_name): fig, axes = plt.subplots(3, 2) dates = pd.date_range("2001", periods=12, freq='MS') axes[0, 0].set_title("Polar Region") axes[0, 1].set_title("Coastal Region") for i, is_np in enumerate([1, 0]): plot_data_3g_np_pos = data_m_3g.loc[(is_np), (plot_param_item, ["mean", "std", "50%"])] plot_data_3g_np_pos["2sigma_pos"] = plot_data_3g_np_pos[ (plot_param_item, "mean")] + 2 * np.sqrt(plot_data_3g_np_pos[ (plot_param_item, "std")]) plot_data_3g_np_pos["2sigma_neg"] = plot_data_3g_np_pos[ (plot_param_item, "mean")] - 2 * np.sqrt(plot_data_3g_np_pos[ (plot_param_item, "std")]) for j, subplot_idx in enumerate([2, 1, 0]): ax = axes[j, i] ax.plot(dates, plot_data_3g_np_pos.loc[(subplot_idx), (plot_param_item, "mean")], '-', color="k") ax.fill_between(dates, plot_data_3g_np_pos.loc[(subplot_idx), ("2sigma_pos")], plot_data_3g_np_pos.loc[(subplot_idx), ("2sigma_neg")], facecolor='lightskyblue', alpha=0.3, interpolate=True) if plot_param_item == "A": for ax in axes: ax.set_ylim([0, 0.025]) elif plot_param_item == "theta": for ax in axes: ax.set_ylim([-180, 180]) ax.set_yticks([-180, -120, -60, 0, 60, 120, 180]) elif plot_param_item == "e2": for ax in axes: ax.set_ylim([0, 1.5]) axes[0, 0].set_ylabel('R2 High') axes[1, 0].set_ylabel('R2 Middle') axes[2, 0].set_ylabel('R2 Low') axes[2, 0].set_xlabel("Month") axes[2, 1].set_xlabel("Month") """ plt.setp(axes[0, 0].get_xticklabels(), visible=False) plt.setp(axes[1, 0].get_xticklabels(), visible=False) plt.setp(axes[0, 1].get_xticklabels(), visible=False) plt.setp(axes[1, 1].get_xticklabels(), visible=False) plt.setp(axes[0, 1].get_yticklabels(), visible=False) plt.setp(axes[1, 1].get_yticklabels(), visible=False) plt.setp(axes[2, 1].get_yticklabels(), visible=False) """ plt.tight_layout() plt.savefig(save_name, dpi=900) plt.close() def plot_param_1g_through_years(data_1g_dic, save_name): fig, axes = plt.subplots(3, 1) dates1 = pd.date_range("2003", "2010", freq='MS').append( pd.date_range("2013", "2017", freq='MS')) dates = dates1[:-1] data_A = pd.DataFrame([]) data_theta = pd.DataFrame([]) data_e2 = pd.DataFrame([]) for y in y_list: data_A = pd.concat([data_A, data_1g_dic[y]["1g_A"]]) data_theta = pd.concat([data_theta, data_1g_dic[y]["1g_theta"]]) data_e2 = pd.concat([data_e2, data_1g_dic[y]["1g_e2"]]) axes[0].plot(dates, data_A['mean'], '-', color="k") axes[0].fill_between(dates, data_A['mean'] + 2 * np.sqrt(data_A['std']), data_A['mean'] - 2 * np.sqrt(data_A['std']), facecolor='green', alpha=0.3, interpolate=True) axes[0].set_ylim([0, 0.025]) axes[0].set_ylabel('A') axes[0].xaxis.set_major_formatter(mdates.DateFormatter('%y%m')) axes[1].plot(dates, data_theta['mean'], '-', color="k") axes[1].fill_between( dates, data_theta['mean'] + 2 * np.sqrt(data_theta['std']), data_theta['mean'] - 2 * np.sqrt(data_theta['std']), facecolor='green', alpha=0.3, interpolate=True) axes[1].set_ylim([-180, 180]) axes[1].set_ylabel('theta') axes[1].xaxis.set_major_formatter(mdates.DateFormatter('%y%m')) axes[2].plot(dates, data_e2['mean'], '-', color="k") axes[2].fill_between(dates, data_e2['mean'] + 2 * np.sqrt(data_e2['std']), data_e2['mean'] - 2 * np.sqrt(data_e2['std']), facecolor='green', alpha=0.3, interpolate=True) #axes[2].set_ylim([0, 0.025]) axes[2].set_ylabel('e2') axes[2].xaxis.set_major_formatter(mdates.DateFormatter('%y%m')) plt.tight_layout() plt.savefig(save_name, dpi=900) plt.close() def plot_param_2g_through_years(data_2g_dic, save_name): fig, axes = plt.subplots(3, 2) dates1 = pd.date_range("2003", "2010", freq='MS').append( pd.date_range("2013", "2017", freq='MS')) dates = dates1[:-1] data_A_np = pd.DataFrame([]) data_A_coastal = pd.DataFrame([]) data_theta_np = pd.DataFrame([]) data_theta_coastal = pd.DataFrame([]) data_e2_np = pd.DataFrame([]) data_e2_coastal = pd.DataFrame([]) for y in y_list: data_A_np = pd.concat([data_A_np, data_2g_dic[y]["2g_A_polar"]]) data_A_coastal = pd.concat( [data_A_coastal, data_2g_dic[y]["2g_A_coastal"]]) data_theta_np = pd.concat( [data_theta_np, data_2g_dic[y]["2g_theta_polar"]]) data_theta_coastal = pd.concat( [data_theta_coastal, data_2g_dic[y]["2g_theta_coastal"]]) data_e2_np = pd.concat([data_e2_np, data_2g_dic[y]["2g_e2_polar"]]) data_e2_coastal = pd.concat( [data_e2_coastal, data_2g_dic[y]["2g_e2_coastal"]]) axes[0, 0].plot(dates, data_A_np['mean'], '-', color="k") axes[0, 0].fill_between(dates, data_A_np['mean'] + 2 * np.sqrt(data_A_np['std']), data_A_np['mean'] - 2 * np.sqrt(data_A_np['std']), facecolor='lightskyblue', alpha=0.3, interpolate=True) axes[0, 0].set_ylim([0, 0.025]) axes[0, 0].set_ylabel('A') axes[0, 0].xaxis.set_major_formatter(mdates.DateFormatter('%y%m')) axes[0, 1].plot(dates, data_A_coastal['mean'], '-', color="k") axes[0, 1].fill_between( dates, data_A_coastal['mean'] + 2 * np.sqrt(data_A_coastal['std']), data_A_coastal['mean'] - 2 * np.sqrt(data_A_coastal['std']), facecolor='lightskyblue', alpha=0.3, interpolate=True) axes[0, 1].set_ylim([0, 0.025]) axes[0, 1].xaxis.set_major_formatter(mdates.DateFormatter('%y%m')) axes[1, 0].plot(dates, data_theta_np['mean'], '-', color="k") axes[1, 0].fill_between( dates, data_theta_np['mean'] + 2 * np.sqrt(data_theta_np['std']), data_theta_np['mean'] - 2 * np.sqrt(data_theta_np['std']), facecolor='lightskyblue', alpha=0.3, interpolate=True) axes[1, 0].set_ylim([-180, 180]) axes[1, 0].set_ylabel('theta') axes[1, 0].xaxis.set_major_formatter(mdates.DateFormatter('%y%m')) axes[1, 1].plot(dates, data_theta_coastal['mean'], '-', color="k") axes[1, 1].fill_between(dates, data_theta_coastal['mean'] + 2 * np.sqrt(data_theta_coastal['std']), data_theta_coastal['mean'] - 2 * np.sqrt(data_theta_coastal['std']), facecolor='lightskyblue', alpha=0.3, interpolate=True) axes[1, 1].set_ylim([-180, 180]) axes[1, 1].xaxis.set_major_formatter(mdates.DateFormatter('%y%m')) axes[2, 0].plot(dates, data_e2_np['mean'], '-', color="k") axes[2, 0].fill_between( dates, data_e2_np['mean'] + 2 * np.sqrt(data_e2_np['std']), data_e2_np['mean'] - 2 * np.sqrt(data_e2_np['std']), facecolor='lightskyblue', alpha=0.3, interpolate=True) #axes[2, 0].set_ylim([0, 0.025]) axes[2, 0].set_ylabel('e2') axes[2, 0].xaxis.set_major_formatter(mdates.DateFormatter('%y%m')) axes[2, 1].plot(dates, data_e2_coastal['mean'], '-', color="k") axes[2, 1].fill_between( dates, data_e2_coastal['mean'] + 2 * np.sqrt(data_e2_coastal['std']), data_e2_coastal['mean'] - 2 * np.sqrt(data_e2_coastal['std']), facecolor='lightskyblue', alpha=0.3, interpolate=True) #axes[2, 1].set_ylim([0, 0.025]) axes[2, 1].xaxis.set_major_formatter(mdates.DateFormatter('%y%m')) #axes[2, 0].set_xlabel("Year") #axes[2, 1].set_xlabel("Year") plt.tight_layout() plt.savefig(save_name, dpi=900) plt.close() y_list = [ "03", "04", "05", "06", "07", "08", "09", "10", "13", "14", "15", "16" ] month_list = [ "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12" ] data_1g_dic = {} data_2g_dic = {} data_3g_dic = {} for y in y_list: data_m = pd.DataFrame([]) for m in month_list: yymm = "20" + y + m hermert_file_name = "../data/csv_Helmert_30/Helmert_30_" + yymm + ".csv" data = calc_data.get_1month_hermert_data(hermert_file_name) data = pd.concat([latlon_ex["Name"], data], axis=1) #data = data.drop(["Lat", "Lon", "Label", "idx1", "idx2"], axis=1) rank_np = np.zeros(145**2) rank_np[data[data.Name == "north_polar"].index] = 1 data["rank_np"] = rank_np rank_R2 = np.ones(145**2) rank_R2[data[data.R2 <= (1 / 3)**2].index] = 0 rank_R2[data[data.R2 > (2 / 3)**2].index] = 2 data["rank_R2"] = rank_R2 data = data.dropna() #https://code.i-harness.com/ja/q/1c29878 print(data.isnull().sum().sum()) data["yymm"] = [pd.to_datetime(yymm, format="%Y%m")] * len(data) data_m = pd.concat([data_m, data]) #月ごとに全てのエリアの平均などを取得 data_m_1g = data_m.groupby("yymm")[[ "A", "theta", "epsilon2" ]].describe().sort_index(level='yymm') #月ごとにrank_npで分類したものを取得 data_m_2g = data_m.groupby(["rank_np", "yymm" ])[["A", "theta", "epsilon2" ]].describe().sort_index(level='yymm') #月ごとにrank_npとrank_R2で分類したものを取得 data_m_3g = data_m.groupby(["rank_np", "rank_R2", "yymm" ])[["A", "theta", "epsilon2" ]].describe().sort_index(level='yymm') if m_plot == True: #1gのプロット save_name_1g = dirs_1g + "1g_" + y + ".png" plot_param_1g(data_m_1g, save_name_1g) #2gのプロット save_name_2g = dirs_2g + "2g_" + y + ".png" plot_param_2g(data_m_2g, save_name_2g) #3gのプロット plot_param_list = ["A", "theta", "epsilon2"] for item in plot_param_list: save_name_3g = dirs_3g + item + "/" + "3g_" + y + ".png" plot_param_3g(data_m_3g, item, save_name_3g) """ sns.tsplot(data=data_m_A, ci="sd") plt.plot(np.nanmean(data_m_A, axis=0)) data_m_theta = data_m[:,:,1].T sns.tsplot(data=data_m_theta, ci="sd") data_m_e2 = data_m[:,:,2].T sns.tsplot(data=data_m_e2, ci="sd") """ tmp_1g = { "1g_A": data_m_1g["A"].loc[:, ["mean", "std", "50%"]], "1g_theta": data_m_1g["theta"].loc[:, ["mean", "std", "50%"]], "1g_e2": data_m_1g["epsilon2"].loc[:, ["mean", "std", "50%"]] } data_1g_dic[y] = tmp_1g tmp_2g = { "2g_A_polar": data_m_2g.loc[(1), ("A", ["mean", "std", "50%"])], "2g_A_coastal": data_m_2g.loc[(0), ("A", ["mean", "std", "50%"])], "2g_theta_polar": data_m_2g.loc[(1), ("theta", ["mean", "std", "50%"])], "2g_theta_coastal": data_m_2g.loc[(0), ("theta", ["mean", "std", "50%"])], "2g_e2_polar": data_m_2g.loc[(1), ("epsilon2", ["mean", "std", "50%"])], "2g_e2_coastal": data_m_2g.loc[(0), ("epsilon2", ["mean", "std", "50%"])] } data_2g_dic[y] = tmp_2g tmp_3g = { "3g_A_polar": data_m_3g.loc[(1), ("A", ["mean", "std", "50%"])], "3g_A_coastal": data_m_3g.loc[(0), ("A", ["mean", "std", "50%"])], "3g_theta_polar": data_m_3g.loc[(1), ("theta", ["mean", "std", "50%"])], "3g_theta_coastal": data_m_3g.loc[(0), ("theta", ["mean", "std", "50%"])], "3g_e2_polar": data_m_3g.loc[(1), ("epsilon2", ["mean", "std", "50%"])], "3g_e2_coastal": data_m_3g.loc[(0), ("epsilon2", ["mean", "std", "50%"])] } data_3g_dic[y] = tmp_3g if y_plot == True: #1g save_name_1g_year = dirs_year + "1g.png" plot_param_1g_through_years(data_1g_dic, save_name_1g_year) #2g save_name_2g_year = dirs_year + "2g.png" plot_param_2g_through_years(data_2g_dic, save_name_2g_year) return data_1g_dic, data_2g_dic, data_3g_dic