From 00aa57f3322e851f5d7ecfc7ac8e4b6c0ad1bd53 Mon Sep 17 00:00:00 2001 From: Rudolf Braun <48672663+BraunRudolf@users.noreply.github.com> Date: Tue, 6 Aug 2024 07:54:27 +0200 Subject: [PATCH 1/3] Add plot to evaluation --- quartz_solar_forecast/evaluation.py | 45 +++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 3 deletions(-) diff --git a/quartz_solar_forecast/evaluation.py b/quartz_solar_forecast/evaluation.py index 4d95fe6a..7fac6549 100644 --- a/quartz_solar_forecast/evaluation.py +++ b/quartz_solar_forecast/evaluation.py @@ -9,7 +9,10 @@ import os import pandas as pd +import plotly.graph_objects as go +from dotenv import load_dotenv from huggingface_hub.hf_api import HfFolder +from plotly.subplots import make_subplots from quartz_solar_forecast.eval.forecast import run_forecast from quartz_solar_forecast.eval.metrics import metrics @@ -17,8 +20,6 @@ from quartz_solar_forecast.eval.pv import get_pv_metadata, get_pv_truth from quartz_solar_forecast.eval.utils import combine_forecast_ground_truth -from dotenv import load_dotenv - load_dotenv() try: @@ -61,7 +62,45 @@ def run_eval(testset_path: str = "dataset/testset.csv"): metrics(results_df, pv_metadata, include_night=False) # Visualizations - # TODO + results_df.set_index("timestamp", inplace=True) + + # sort by timestamp + results_df.sort_index(inplace=True) + fig = make_subplots( + rows=2, cols=1, subplot_titles=("Predictions", "Actual"), vertical_spacing=0.05 + ) + + # Add the first plot to the first column + fig.add_trace( + go.Scatter( + x=results_df.index, + y=results_df["forecast_power"], + mode="lines", + name="Forecasted Power", + ), + row=1, + col=1, + ) + + # Add the second plot to the second column + fig.add_trace( + go.Scatter( + x=results_df.index, + y=results_df["generation_power"], + mode="lines", + name="Generated Power", + ), + row=2, + col=1, + ) + + # Update layout + fig.update_layout( + title="Evalution - Comparision Prediction vs. Actual", + xaxis_tickformat="%Y-%m-%d", + xaxis2_tickformat="%Y-%m-%d", + ) + fig.show(renderer="browser") # run_eval() From da16c943661527807146c30bfa493093914aa217 Mon Sep 17 00:00:00 2001 From: Rudolf Braun <48672663+BraunRudolf@users.noreply.github.com> Date: Tue, 6 Aug 2024 11:07:39 +0200 Subject: [PATCH 2/3] Add limit to last 10 values --- quartz_solar_forecast/evaluation.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/quartz_solar_forecast/evaluation.py b/quartz_solar_forecast/evaluation.py index 7fac6549..6d0536d2 100644 --- a/quartz_solar_forecast/evaluation.py +++ b/quartz_solar_forecast/evaluation.py @@ -65,7 +65,11 @@ def run_eval(testset_path: str = "dataset/testset.csv"): results_df.set_index("timestamp", inplace=True) # sort by timestamp - results_df.sort_index(inplace=True) + results_df.sort_index(inplace=True, ascending=False) + + # select last 10 values + df_last10 = results_df[:10] + fig = make_subplots( rows=2, cols=1, subplot_titles=("Predictions", "Actual"), vertical_spacing=0.05 ) @@ -73,8 +77,8 @@ def run_eval(testset_path: str = "dataset/testset.csv"): # Add the first plot to the first column fig.add_trace( go.Scatter( - x=results_df.index, - y=results_df["forecast_power"], + x=df_last10.index, + y=df_last10["forecast_power"], mode="lines", name="Forecasted Power", ), @@ -85,8 +89,8 @@ def run_eval(testset_path: str = "dataset/testset.csv"): # Add the second plot to the second column fig.add_trace( go.Scatter( - x=results_df.index, - y=results_df["generation_power"], + x=df_last10.index, + y=df_last10["generation_power"], mode="lines", name="Generated Power", ), From 5ea34076de8de95047283d94e59b29788bc9b489 Mon Sep 17 00:00:00 2001 From: Rudolf Braun <48672663+BraunRudolf@users.noreply.github.com> Date: Wed, 7 Aug 2024 09:40:20 +0200 Subject: [PATCH 3/3] Combine to one plot --- quartz_solar_forecast/evaluation.py | 23 ++++++----------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/quartz_solar_forecast/evaluation.py b/quartz_solar_forecast/evaluation.py index 6d0536d2..ecf87bf6 100644 --- a/quartz_solar_forecast/evaluation.py +++ b/quartz_solar_forecast/evaluation.py @@ -70,39 +70,28 @@ def run_eval(testset_path: str = "dataset/testset.csv"): # select last 10 values df_last10 = results_df[:10] - fig = make_subplots( - rows=2, cols=1, subplot_titles=("Predictions", "Actual"), vertical_spacing=0.05 - ) - - # Add the first plot to the first column - fig.add_trace( + traces = [] + traces.append( go.Scatter( x=df_last10.index, y=df_last10["forecast_power"], mode="lines", name="Forecasted Power", - ), - row=1, - col=1, + ) ) - - # Add the second plot to the second column - fig.add_trace( + traces.append( go.Scatter( x=df_last10.index, y=df_last10["generation_power"], mode="lines", name="Generated Power", - ), - row=2, - col=1, + ) ) - # Update layout + fig = fig = go.Figure(data=traces) fig.update_layout( title="Evalution - Comparision Prediction vs. Actual", xaxis_tickformat="%Y-%m-%d", - xaxis2_tickformat="%Y-%m-%d", ) fig.show(renderer="browser")