def get_displacement_model_traces(load_data, visualised_load_data, traces, model, model_name, model_color, y_axis, start_date, end_date): predicted_load_data = displacement_model.predict( load_data, start_date, end_date, model) assert (len(visualised_load_data) == len(predicted_load_data)) # prevents plotting a model when not all displaced data is available predicted_load_traces = generate_traces( visualised_load_data['Date'], predicted_load_data[y_axis], model_name, predicted_load_data['Date'].tolist(), color=model_color) traces.extend(predicted_load_traces) return traces
def get_regression_model_traces(load_data, visualised_load_data, traces, model, model_name, model_color, y_axis, start_date, end_date): try: predicted_load_data = regression_model.predict( load_data, start_date, end_date, model, y_axis) except Exception as predict_error: raise predict_error predicted_load_traces = generate_traces( visualised_load_data['Date'], predicted_load_data, model_name, color=model_color) traces.extend(predicted_load_traces) return traces
def get_highlighted_traces(traces, highlight_variable, highlight_value, load_data, start_date, end_date, y_axis): visualised_load_data = load_data[( load_data.Date >= start_date) & (load_data.Date <= end_date)] if (highlight_variable != 'None' and highlight_value != 'None'): #if there is highlighted data points specified highlighted_load_data = pd.DataFrame() #structure to hold data entries that are highlighted highlighted_load_data['Date'], highlighted_load_data['y_axis'] = zip(*visualised_load_data.apply( lambda row: get_highlighted_entries_dataframe(row, highlight_variable, highlight_value, y_axis), axis=1)) highlighted_traces = generate_traces( highlighted_load_data['Date'], highlighted_load_data['y_axis'], 'Highlighted Load', color=highlight_color, line_width=2) traces.extend(highlighted_traces) return traces
def generate_model_error_traces(load_data, graph_figure, models, test_data_start_date, test_data_end_date, highlight_variable, highlight_value): actual_load_y = graph_figure['data'][0]['y'] # if there is highlighted data points, models index >= 2 if (graph_figure['data'][1]['name'] == 'Highlighted Load'): start_index = 2 highlighted_dates = graph_figure['data'][1][ 'x'] # list of dates that are highlighted in the visualised models graph else: start_index = 1 highlighted_dates = [ ] #no highlighted dates in the model visualisation graph if (test_data_start_date == None or test_data_end_date == None): #if there is test data chosen, need to visualise this is_test_data = False else: is_test_data = True model_error_traces = [] #list of traces to plot highlighted_data_points = pd.DataFrame( columns=['APE', 'Percentage', 'Text'] ) # structure to contain the highlighted data error points to superimpose onto the graph for i in range(start_index, len(graph_figure['data']) ): #iterate through all model visualisation points on graph plotted_model = graph_figure['data'][ i] #the model forecast plotted in the load visualisation graph model_error_traces, highlighted_data_points = generate_visualised_error_traces( plotted_model, actual_load_y, model_error_traces, highlighted_dates, highlighted_data_points) if ( is_test_data == True ): #test data is chosen, generate test data model error visualisation points model_error_traces, highlighted_data_points = generate_test_error_traces( plotted_model, models, load_data, test_data_start_date, test_data_end_date, highlight_variable, highlight_value, model_error_traces, highlighted_data_points) if (len(highlighted_data_points) ): #if there is highlighted points generate their superimposed traces highlighted_traces = generate_traces( highlighted_data_points['APE'], highlighted_data_points['Percentage'], 'Highlighted', highlighted_data_points['Text'].tolist(), color=highlight_color, marker_size=4, mode='markers') model_error_traces.extend(highlighted_traces) return model_error_traces
def generate_error_traces(model_error_traces, model_error_data, legend_name, model_color, highlighted_data_points): error_traces = generate_traces(model_error_data['APE'], model_error_data['Percentage'], legend_name, model_error_data['Text'].tolist(), color=model_color, marker_size=1.5, mode='lines+markers', line_width=2) model_error_traces.extend(error_traces) highlighted_data_points = highlighted_data_points.append( model_error_data[model_error_data['Highlight'] == True], sort=False) return model_error_traces, highlighted_data_points
def get_visualised_traces(load_data, start_date, end_date, y_axis): visualised_load_data = load_data[( load_data.Date >= start_date) & (load_data.Date <= end_date)] visualised_traces = generate_traces( visualised_load_data['Date'], visualised_load_data[y_axis], 'Actual Load', color=actual_load_color) return visualised_traces