Esempio n. 1
0
    def test_plot_seasonal(self):
        daily_avg_df = hd.daily_average(df=self.merged_df)
        daily_std_error = hd.daily_std_error(merged_data=self.merged_df)

        # Creating test image array
        hv.plot(merged_data_df=daily_avg_df,
                title='Daily Average Streamflow (Standard Error)',
                legend=('SFPT', 'GLOFAS'),
                x_season=True,
                labels=['Datetime', 'Streamflow (csm)'],
                linestyles=['r-', 'k-'],
                fig_size=(14, 8),
                ebars=daily_std_error,
                ecolor=('r', 'k'),
                tight_xlim=True)
        buf = BytesIO()
        plt.savefig(buf, format='png')
        buf.seek(0)
        img_test = mpimg.imread(buf)
        buf.close()

        # Reading Original Image
        img_original = mpimg.imread(
            r'baseline_images/plot_tests/plot_seasonal.png')

        # Comparing
        self.assertTrue(np.all(np.isclose(img_test, img_original)))
Esempio n. 2
0
    def test_plot_full1(self):
        # Creating Test Image
        hv.plot(merged_data_df=self.merged_df,
                title='Hydrograph of Entire Time Series',
                linestyles=['r-', 'k-'],
                legend=('SFPT', 'GLOFAS'),
                labels=['Datetime', 'Streamflow (cfs)'],
                metrics=['ME', 'NSE', 'SA'],
                grid=True)
        buf = BytesIO()
        plt.savefig(buf, format='png')
        buf.seek(0)
        img_test = mpimg.imread(buf)
        buf.close()

        # Reading Original Image
        img_original = mpimg.imread(r'baseline_images/plot_tests/plot_full1.png')

        # Comparing
        self.assertTrue(np.all(np.isclose(img_test, img_original)))
                              'R (Spearman)', 'r2'
                          ],
                          location=name,
                          remove_neg=False,
                          remove_zero=False)
    all_station_table = all_station_table.append(table)

    #Making plots for all the stations

    sim_array = merged_df.iloc[:, 0].values
    obs_array = merged_df.iloc[:, 1].values

    hv.plot(merged_df,
            legend=('Simulated', 'Observed'),
            grid=True,
            title='Hydrograph for ' + name + '\n River: ' + rio + '. COMID: ' +
            str(comid),
            labels=['Datetime', 'Volume (BCM)'],
            linestyles=['b-', 'r-'],
            fig_size=(15, 9))
    plt.savefig(
        path.join(plot_out_dir,
                  '{0}_{1}_hydrographs.png'.format(str(comid), name)))

    hv.scatter(merged_data_df=merged_df,
               grid=True,
               title='Scatter Plot for ' + name + '\n River: ' + rio +
               '. COMID: ' + str(comid),
               labels=('Simulated', 'Observed'),
               line45=True,
               best_fit=True,
               figsize=(15, 9))
Esempio n. 4
0
metrics = []

# This list controls the axis labels:
labels=['Datetime', 'Streamflow (cms)']


# End of Dynamic Input. Do NOT Change the following -------------------------------------------

# Create a list of 18 stream modified Time Series
list_riv_part = []
for riv in list_riv_mouth:
    riv_part = riv.loc[begin_date:end_date]
    list_riv_part.append(riv_part)

for s, o, c1, t, s1 in zip(list_sim, list_obs, color1, range(18), series1):
    merged_df = hd.merge_data(sim_df=list_riv_part[s], obs_df=list_obs_df[o])
    filename = year + ': ' + list_titles[t]
    hv.plot(merged_data_df=merged_df,
            title=filename,
            linestyles=[c1, 'k-'],
            legend=(s1, series2),
            labels=labels,
            metrics = metrics,
            grid=True)
    plt.savefig('/home/chrisedwards/Documents/rapid_output/graphs/{}.png'.format(filename))





Esempio n. 5
0
             'k',
             color='red',
             label='Observed Volume')
    plt.title('Volume Analysis for ' + str(id) + ' - ' + name + '\n River: ' +
              rio + '. COMID: ' + str(comid))
    plt.xlabel('Date')
    plt.ylabel('Volume (Mm^3)')
    plt.legend()
    plt.grid()
    plt.savefig(volume_analysis_out_dir + '/Volume Analysis for ' + str(id) +
                ' - ' + name + '. COMID - ' + str(comid) + '.png')

    hv.plot(merged_df,
            legend=('Simulated', 'Observed'),
            grid=True,
            title='Hydrograph for ' + str(id) + ' - ' + name + '\n River: ' +
            rio + '. COMID: ' + str(comid),
            labels=['Datetime', 'Streamflow (m$^3$/s)'],
            linestyles=['b-', 'r-'],
            fig_size=(15, 9))
    plt.savefig(
        path.join(plot_out_dir,
                  '{0}_{1}_hydrographs.png'.format(str(id), name)))

    daily_avg = hd.daily_average(merged_df)
    daily_std_error = hd.daily_std_error(merged_data=merged_df)
    hv.plot(merged_data_df=daily_avg,
            legend=('Simulated', 'Observed'),
            grid=True,
            x_season=True,
            title='Daily Average Streamflow (Standard Error) for ' + str(id) +
            ' - ' + name + '\n River: ' + rio + '. COMID: ' + str(comid),
	observed_monthly = pd.read_csv('/Users/student/Dropbox/PhD/2020 Winter/Dissertation_v9/Africa/Blue_Nile/Data/Historical/observed_data/Multiannual_Mean_Streamflow/{0}_{1}.csv'.format(comid, name), dtype={'Month': str})
	observed_monthly.set_index('Month', inplace=True)

	observed_monthly_avg = observed_monthly[['Mean Streamflow (m3/s)']]
	observed_monthly_std_error = observed_monthly[['Standard Error']]

	monthly_avg_obs_ERA5 = ERA5_monthly_avg.join(observed_monthly_avg)
	monthly_std_error_ERA5 = ERA5_monthly_std_error.join(observed_monthly_std_error)

	monthly_avg_obs_ERA_Interim = ERA_Interim_monthly_avg.join(observed_monthly_avg)
	monthly_std_error_ERA_Interim = ERA_Interim_monthly_std_error.join(observed_monthly_std_error)

	hv.plot(merged_data_df=monthly_avg_obs_ERA5, legend=('ERA-5', 'Observed'), grid=True, x_season=True,
	        # title='Monthly Average Streamflow (Standard Error) for ' + str(
	        #    id) + ' - ' + name + '\n River: ' + rio + '. COMID: ' + str(comid),
	        title='Monthly Average Streamflow (Standard Error) for ' + name + '\n River: '
	              + rio + '. COMID: ' + str(comid),
	        labels=['Datetime', 'Streamflow (m$^3$/s)'], linestyles=['b-', 'r-'], fig_size=(15, 9),
	        ebars=monthly_std_error_ERA5, ecolor=('b', 'r'), tight_xlim=False)
	# plt.savefig(path.join(monthly_average_out_dir, '{0}_{1}_monthly_average.png'.format(str(id), name)))
	plt.savefig(path.join(
		'/Users/student/Dropbox/PhD/2020 Winter/Dissertation_v9/Africa/Blue_Nile/Data/Historical/observed_data/Multiannual_Mean_Streamflow',
		'{0}_{1}_monthly_average_ERA5_Corrected.png'.format(str(comid), name)))

	hv.plot(merged_data_df=monthly_avg_obs_ERA_Interim, legend=('ERA-5', 'Observed'), grid=True, x_season=True,
	        # title='Monthly Average Streamflow (Standard Error) for ' + str(
	        #    id) + ' - ' + name + '\n River: ' + rio + '. COMID: ' + str(comid),
	        title='Monthly Average Streamflow (Standard Error) for ' + name + '\n River: '
	              + rio + '. COMID: ' + str(comid),
	        labels=['Datetime', 'Streamflow (m$^3$/s)'], linestyles=['b-', 'r-'], fig_size=(15, 9),
	        ebars=monthly_std_error_ERA_Interim, ecolor=('b', 'r'), tight_xlim=False)
Esempio n. 7
0
# There are a total of 180 streams, or 180 keys in the dictionary: seas_avg_dict['az-7']
# list_streams_condensed = list of all the stream names, or names of the data frames.

# ***************************************************************************************************************
# ***************************************************************************************************************

az_9 = streamflow_dict['mo-7']
az_avg_9 = seas_avg_dict['mo-avg-7']

merged_df = hd.merge_data(sim_df=az_9,
                          obs_df=streamflow_dict['az-21'],
                          column_names=['9-calc', '21-calc'])
dailyavg2 = hd.daily_average(merged_df)
avg_calc = dailyavg2.drop(columns='21-calc')

az_avg_9.index = pd.date_range("2001-01-01", "2001-12-31").strftime("%m/%d")

group = [avg_calc, az_avg_9]
calc_vs_ncdf = pd.concat(group, axis=1)
calc_vs_ncdf.drop(index='02/29', inplace=True)

labels = ['Datetime', 'Streamflow (cms)']
hv.plot(merged_data_df=calc_vs_ncdf,
        title="MO Daily Avg: Hydrostats vs Rapid ",
        linestyles=['r-', 'k-'],
        legend=('Hydrostats', 'Rapid NetCDF'),
        labels=labels,
        x_season=True,
        grid=True)
plt.savefig(
    '/home/chrisedwards/Documents/rapid_output/graphs/mo-dav_hd-vs-rapid.png')
Esempio n. 8
0
# This list controls the axis labels:
labels=['Datetime', 'Streamflow (cms)']


# End of Dynamic Input. Do NOT Change the following -------------------------------------------

# Create a list of 18 stream modified Time Series
list_riv_part = []
for riv in list_riv_mouth:
    riv_part = riv.loc[begin_date:end_date]
    list_riv_part.append(riv_part)

for s, o, t, c1, c2, s1, s2 in zip(list_sim, list_obs, range(18), color1, color2, series1, series2):
    merged_df = hd.merge_data(sim_df=list_riv_part[s], obs_df=list_riv_part[o])
    davg_df = hd.daily_average(merged_df)
    filename = list_titles[t]
    hv.plot(merged_data_df=davg_df,
            title=filename,
            linestyles=[c1, c2],
            legend=(s1, s2),
            labels=labels,
            metrics = metrics,
            x_season=True,
            grid=True)
    plt.savefig('/home/chrisedwards/Documents/rapid_output/graphs/{}.png'.format(filename))





    'AZ: Sim (str-60) vs Obs (gauge-09492400)',
    'MO: Sim (str-50) vs Obs (gauge-07013000)',
    'MO: Sim (str-51) vs Obs (gauge-07014000)',
    'NY: Sim (str-47) vs Obs (gauge-01413408)',
    'NY: Sim (str-46) vs Obs (gauge-01413398)',
    'OR: Sim (str-58) vs Obs (gauge-14306400)',
    'OR: Sim (str-47) vs Obs (gauge-14306100)'
]

# This list specifies which metrics to use:
metrics = []

# This list controls the axis labels:
labels = ['Datetime', 'Streamflow (cms)']

for s, o, t in zip(range(12), range(12), range(12)):
    merged_df = hd.merge_data(sim_df=list_sim_df[s], obs_df=list_obs_df[o])
    da_df = hd.daily_average(merged_df)
    filename = list_titles[t] + ' Daily Average'
    hv.plot(merged_data_df=da_df,
            title=filename,
            linestyles=['b-', 'k-'],
            legend=('Sim', 'Obs'),
            labels=labels,
            metrics=metrics,
            x_season=True,
            grid=True)
    plt.tight_layout()
    plt.savefig(
        '/home/chrisedwards/Documents/rapid_output/graphs/{}.png'.format(
            filename))
list_obs_df = [az_obs_cms, id_obs_cms, mo_obs_cms, ny_obs_cms, or_obs_cms]

x_df = or_obs_full.drop(columns=['Flow-cms', 'Estimation'])

# ------------------------------------------------------------------------------------------------------

merged_df = hd.merge_data(sim_df=x_df,
                          obs_df=or_obs_cms,
                          column_names=['Delete', 'Observed'])

temp_da = hd.daily_average(merged_df)
avg_obs = temp_da.drop(columns='Delete')

or_lowres.index = pd.date_range("2001-01-01", "2001-12-31").strftime("%m/%d")

group = [or_lowres, avg_obs]
rapid_vs_obs = pd.concat(group, axis=1)
rapid_vs_obs.drop(index='02/29', inplace=True)

# print(rapid_vs_obs)

labels = ['Datetime', 'Streamflow (cms)']
hv.plot(merged_data_df=rapid_vs_obs,
        title="OR Rapid Daily Avg: Low vs Obs",
        linestyles=['r-', 'k-'],
        legend=('Low Res', 'Obs'),
        labels=labels,
        x_season=True,
        grid=True)
plt.savefig(
    '/home/chrisedwards/Documents/rapid_output/graphs/or-dav_rapid-vs-obs.png')