-
Notifications
You must be signed in to change notification settings - Fork 0
/
Hydrograph.py
90 lines (64 loc) · 2.61 KB
/
Hydrograph.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# -*- coding: utf-8 -*-
"""
Created on Wed Feb 20 21:16:31 2019
@author: Callum Wayman
Example of a hydrograph showing nearby precipitation and discharge for a given stream
Datasets: USGS mean daily discharge for Juniata River in Huntington PA, converted from cubic feet per second to
cubic meters per second. Precipitation from the National Atmospheric Deposition Program (NADP) Leading Ridge
site in Huntington County PA. Precipitation is converted from inches to mm of precip collected per day.
"""
#%%
#Package Import
import os
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import host_subplot
import mpl_toolkits.axisartist as AA
import matplotlib.dates as mdates
#%%
#File Input and Data Frame/Array Creation
'''Selecting the file from the correct path and creating a pandas dataframe from the excel file'''
precip_filename = 'LeadingRidgePrecip.xlsx'
q_filename = 'Juniata_Discharge.xlsx'
precip_file = pd.ExcelFile(os.getcwd() + '\\' + precip_filename)
q_file = pd.ExcelFile(os.getcwd() + '\\' + q_filename)
precip = pd.DataFrame(pd.read_excel(precip_file, sheet_name = 'Data'))
q = pd.DataFrame(pd.read_excel(q_file, sheet_name = 'Data'))
'''Creating date and data arrays for precipitation and discharge'''
precip_arr = np.array(precip.loc[:,'Precipitation (mm)'])
precip_dates = np.array(precip.loc[:,'Date'])
q_arr = np.array(q.loc[:,'Discharge (cms)'])
q_dates = np.array(q.loc[:,'Date'])
months = mdates.MonthLocator()
years = mdates.YearLocator()
#%% Plots
'''Create a hydrograph plot of precipitation and discharge'''
plt.close('all')
fst = 20
fsa = 20
fsT = 25
datemin = pd.to_datetime('01/01/2017')
datemax = pd.to_datetime('12/31/2017')
plt.figure(figsize=[12,6])
host = host_subplot(111, axes_class=AA.Axes)
par1 = host.twinx()
p1 = host.plot(q_dates, q_arr,color='b')
p2 = par1.bar(precip_dates,precip_arr,color='k',width=1.5)
par1.invert_yaxis()
host.set_xlim(datemin,datemax)
host.set_ylim(0, 250)
par1.set_ylim(100, 0)
host.set_ylabel("Discharge (cms)",fontsize = fsa)
par1.set_ylabel("Precipitation (cm)",fontsize = fsa)
host.set_xlabel('Date', fontsize = fsa)
plt.title('Hydrograph for Juniata River (2017)',fontsize = fsT)
monthsFmt = mdates.DateFormatter('%b-%Y')
yearsFmt = mdates.DateFormatter('\n%Y')
#host.xaxis.set_minor_locator(years)
host.xaxis.set_major_locator(months)
host.xaxis.set_major_formatter(monthsFmt)
#host.xaxis.set_minor_formatter(yearsFmt)
host.set_xlim(datemin, datemax)
host.tick_params(axis='both',direction = 'in',labelsize = fst)
plt.tight_layout()