Source code for gridstatus.viz
import plotly.express as px
[docs]
def dam_heat_map(df):
"""Create a heat map of day-ahead location marginal prices.
Arguments:
df (pandas.DataFrame): A DataFrame with columns "Time", "Location", and "LMP".
If Hour is specified, it will be used as the x-axis.
Otherwise, the hour ending will be used instead of Time
Returns:
plotly.graph_objects.Figure: A heat map of day-ahead location marginal prices.
"""
if "Hour" not in df.columns:
df["Hour"] = df["Time"].dt.hour
date_str = df["Time"].dt.date[0].strftime("%m/%d/%Y")
title = "Day-Ahead Location Marginal Prices on " + date_str + " ($/MWh)"
heat_map_data = df.pivot(
index="Location",
columns="Hour",
values="LMP",
).round(0)
fig = px.imshow(
heat_map_data,
text_auto=True,
title=title,
template="plotly_dark",
)
fig.update_xaxes(
title="Hour Ending",
tickmode="array",
tickvals=list(range(1, 25)),
)
fig.update_yaxes(title="")
fig.update_layout(title_x=0.5)
return fig
[docs]
def load_over_time(df, iso=None):
"""Create a line graph of load dataframe"""
y = "Load"
if len(df.columns) > 3:
y = df.columns[2:]
title = "Load Over Time"
if iso:
title += " - " + iso
fig = px.line(
df,
x=df["Time"],
y=y,
title=title,
)
# show legend
fig.update_layout(
legend=dict(
orientation="h",
title_text=None,
y=-0.2,
),
)
fig.update_yaxes(title_text="MW")
return fig