Ejemplo n.º 1
0
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")
Ejemplo n.º 2
0
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")
Ejemplo n.º 3
0
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")
Ejemplo n.º 4
0
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")
Ejemplo n.º 5
0
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")
Ejemplo n.º 6
0
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")
Ejemplo n.º 7
0
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")
Ejemplo n.º 8
0
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
Ejemplo n.º 9
0
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()
Ejemplo n.º 10
0
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")
Ejemplo n.º 11
0
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)
Ejemplo n.º 12
0
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")
Ejemplo n.º 13
0
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")
Ejemplo n.º 14
0
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()
Ejemplo n.º 15
0
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()
Ejemplo n.º 16
0
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)
Ejemplo n.º 17
0
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)
Ejemplo n.º 18
0
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")
Ejemplo n.º 19
0
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()
Ejemplo n.º 20
0
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")
Ejemplo n.º 21
0
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")
Ejemplo n.º 22
0
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()
Ejemplo n.º 23
0
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")
Ejemplo n.º 24
0
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