Skip to content

Commit 0d264ca

Browse files
committed
enable forecast records plot
1 parent cb6f080 commit 0d264ca

File tree

5 files changed

+41
-14
lines changed

5 files changed

+41
-14
lines changed

docs/api-documentation/plots.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,4 @@ geoglows.plots
44

55
.. automodule:: geoglows.plots
66
:members:
7-
forecast, forecast_stats, forecast_ensembles, retrospective, annual_averages, monthly_averages, daily_averages, flow_duration_curve, corrected_retrospective, corrected_month_average, corrected_day_average, corrected_scatterplots
7+
forecast, forecast_stats, forecast_ensembles, forecast_records, retrospective, annual_averages, monthly_averages, daily_averages, flow_duration_curve, corrected_retrospective, corrected_month_average, corrected_day_average, corrected_scatterplots

geoglows/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,6 @@
1212
'bias', 'plots', 'data', 'analyze', 'streams', 'tables', 'streamflow',
1313
'METADATA_TABLE_PATH'
1414
]
15-
__version__ = '1.2.1'
15+
__version__ = '1.3.0'
1616
__author__ = 'Riley Hales'
1717
__license__ = 'BSD 3-Clause Clear License'

geoglows/_plots/__init__.py

+2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
forecast,
33
forecast_stats,
44
forecast_ensembles,
5+
forecast_records,
56
retrospective,
67
daily_averages,
78
monthly_averages,
@@ -17,6 +18,7 @@
1718
'forecast',
1819
'forecast_stats',
1920
'forecast_ensembles',
21+
'forecast_records',
2022
'retrospective',
2123
'daily_averages',
2224
'monthly_averages',

geoglows/_plots/plotly_forecasts.py

+5-5
Original file line numberDiff line numberDiff line change
@@ -259,27 +259,27 @@ def forecast_ensembles(df: pd.DataFrame, *, rp_df: pd.DataFrame = None, plot_tit
259259
return go.Figure(scatter_plots, layout=layout)
260260

261261

262-
def forecast_records(recs: pd.DataFrame, *, rp_df: pd.DataFrame = None, plot_titles: list = False, ) -> go.Figure:
262+
def forecast_records(df: pd.DataFrame, *, rp_df: pd.DataFrame = None, plot_titles: list = False, ) -> go.Figure:
263263
"""
264264
Makes the streamflow saved forecast data and metadata into a plotly plot
265265
266266
Args:
267-
recs: the csv response from forecast_records
267+
df: the csv response from forecast_records
268268
rp_df: the csv response from return_periods
269269
plot_titles: a list of strings to place in the figure title. each list item will be on a new line.
270270
271271
Return:
272272
plotly.GraphObject: plotly object, especially for use with python notebooks and the .show() method
273273
"""
274274
# Start processing the inputs
275-
dates = recs.index.tolist()
275+
dates = df.index.tolist()
276276
startdate = dates[0]
277277
enddate = dates[-1]
278278

279279
plot_data = {
280280
'x_records': dates,
281-
'recorded_flows': recs.dropna(axis=0).values.flatten(),
282-
'y_max': max(recs.values),
281+
'recorded_flows': df.dropna(axis=0).values.flatten(),
282+
'y_max': np.nanmax(df.values),
283283
}
284284
if rp_df is not None:
285285
plot_data.update(rp_df.to_dict(orient='index').items())

geoglows/_plots/plots.py

+32-7
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,17 @@
22
import plotly.graph_objects as go
33

44
from .format_tools import plotly_figure_to_html_plot
5+
from .plotly_bias_corrected import (
6+
corrected_retrospective as plotly_corrected_retrospective,
7+
corrected_month_average as plotly_corrected_month_average,
8+
corrected_day_average as plotly_corrected_day_average,
9+
corrected_scatterplots as plotly_corrected_scatterplots,
10+
)
511
from .plotly_forecasts import (
612
forecast as plotly_forecast,
713
forecast_stats as plotly_forecast_stats,
8-
forecast_ensembles as plotly_forecast_ensembles
14+
forecast_ensembles as plotly_forecast_ensembles,
15+
forecast_records as plotly_forecast_records,
916
)
1017
from .plotly_retrospective import (
1118
retrospective as plotly_retrospective,
@@ -14,17 +21,12 @@
1421
annual_averages as plotly_annual_averages,
1522
flow_duration_curve as plotly_flow_duration_curve,
1623
)
17-
from .plotly_bias_corrected import (
18-
corrected_retrospective as plotly_corrected_retrospective,
19-
corrected_month_average as plotly_corrected_month_average,
20-
corrected_day_average as plotly_corrected_day_average,
21-
corrected_scatterplots as plotly_corrected_scatterplots,
22-
)
2324

2425
__all__ = [
2526
'forecast',
2627
'forecast_stats',
2728
'forecast_ensembles',
29+
'forecast_records',
2830

2931
'retrospective',
3032
'daily_averages',
@@ -105,6 +107,29 @@ def forecast_ensembles(df: pd.DataFrame, *,
105107
raise NotImplementedError(f'Plot type "{plot_type}" is not supported.')
106108

107109

110+
def forecast_records(df: pd.DataFrame, *,
111+
plot_type: str = 'plotly',
112+
rp_df: pd.DataFrame = None,
113+
plot_titles: list = None, ) -> go.Figure:
114+
"""
115+
Plots forecasted streamflow and optional return periods
116+
Args:
117+
df:
118+
plot_type:
119+
rp_df:
120+
plot_titles:
121+
122+
Returns:
123+
go.Figure
124+
"""
125+
if plot_type in ('plotly', 'html'):
126+
figure = plotly_forecast_records(df, rp_df=rp_df, plot_titles=plot_titles)
127+
if plot_type == 'html':
128+
return plotly_figure_to_html_plot(figure)
129+
return figure
130+
raise NotImplementedError(f'Plot type "{plot_type}" is not supported.')
131+
132+
108133
def retrospective(df: pd.DataFrame, *,
109134
plot_type: str = 'plotly',
110135
rp_df: pd.DataFrame = None,

0 commit comments

Comments
 (0)