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)))
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))
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))
'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)
# 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')
# 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')