def main(args=None): """ Parse the arguments, get the data in a df, and create the plot :return: if requested, return the plot as JSON object """ if args is None: args = sys.argv[1:] parsed_args = parse_arguments(arguments=args) conn = connect_to_database(db_path=parsed_args.database) c = conn.cursor() scenario_id, scenario = get_scenario_id_and_name( scenario_id_arg=parsed_args.scenario_id, scenario_name_arg=parsed_args.scenario, c=c, script="energy_plot") tech_colors = get_tech_colors(c) tech_plotting_order = get_tech_plotting_order(c) energy_unit = get_unit(c, "energy") plot_title = "{}Energy by Period - {} - Stage {}".format( "{} - ".format(scenario) if parsed_args.scenario_name_in_title else "", parsed_args.load_zone, parsed_args.stage) plot_name = "EnergyPlot-{}-{}".format(parsed_args.load_zone, parsed_args.stage) df = get_plotting_data(conn=conn, scenario_id=scenario_id, load_zone=parsed_args.load_zone, stage=parsed_args.stage) source, x_col_reordered = process_stacked_plot_data( df=df, y_col="energy_mwh", x_col=["period"], category_col="technology") # Multi-level index in CDS will be joined into one column with "_" separator x_col_cds = "_".join(x_col_reordered) x_col_label = ", ".join([x.capitalize() for x in x_col_reordered]) plot = create_stacked_bar_plot(source=source, x_col=x_col_cds, x_label=x_col_label, y_label="Energy ({})".format(energy_unit), category_label="Technology", category_colors=tech_colors, category_order=tech_plotting_order, title=plot_title, ylimit=parsed_args.ylimit) # Show plot in HTML browser file if requested if parsed_args.show: show_plot(plot=plot, plot_name=plot_name, plot_write_directory=parsed_args.plot_write_directory, scenario=scenario) # Return plot in json format if requested if parsed_args.return_json: return json_item(plot, plot_name)
def main(args=None): """ Parse the arguments, get the data in a df, and create the plot :return: if requested, return the plot as JSON object """ if args is None: args = sys.argv[1:] parsed_args = parse_arguments(arguments=args) conn = connect_to_database(db_path=parsed_args.database) c = conn.cursor() scenario_id, scenario = get_scenario_id_and_name( scenario_id_arg=parsed_args.scenario_id, scenario_name_arg=parsed_args.scenario, c=c, script="carbon_plot" ) carbon_unit = get_unit(c, "carbon_emissions") cost_unit = get_unit(c, "cost") plot_title = "{}Carbon Emissions by Period - {} - Subproblem {} - Stage {}"\ .format( "{} - ".format(scenario) if parsed_args.scenario_name_in_title else "", parsed_args.carbon_cap_zone, parsed_args.subproblem, parsed_args.stage) plot_name = "CarbonPlot-{}-{}-{}".format( parsed_args.carbon_cap_zone, parsed_args.subproblem, parsed_args.stage) df = get_plotting_data( conn=conn, scenario_id=scenario_id, carbon_cap_zone=parsed_args.carbon_cap_zone, subproblem=parsed_args.subproblem, stage=parsed_args.stage ) plot = create_plot( df=df, title=plot_title, carbon_unit=carbon_unit, cost_unit=cost_unit, ylimit=parsed_args.ylimit ) # Show plot in HTML browser file if requested if parsed_args.show: show_plot(plot=plot, plot_name=plot_name, plot_write_directory=parsed_args.plot_write_directory, scenario=scenario) # Return plot in json format if requested if parsed_args.return_json: return json_item(plot, "plotHTMLTarget")
def main(args=None): """ Parse the arguments, get the data in a df, and create the plot :return: if requested, return the plot as JSON object """ if args is None: args = sys.argv[1:] parsed_args = parse_arguments(arguments=args) conn = connect_to_database(db_path=parsed_args.database) c = conn.cursor() scenario_id, scenario = get_scenario_id_and_name( scenario_id_arg=parsed_args.scenario_id, scenario_name_arg=parsed_args.scenario, c=c, script="dispatch_plot") tech_colors = get_tech_colors(c) tech_plotting_order = get_tech_plotting_order(c) power_unit = get_unit(c, "power") plot_title = "{}Dispatch Plot - {} - Stage {} - Timepoints {}-{}".format( "{} - ".format(scenario) if parsed_args.scenario_name_in_title else "", parsed_args.load_zone, parsed_args.stage, parsed_args.starting_tmp, parsed_args.ending_tmp) plot_name = "dispatchPlot-{}-{}-{}-{}".format(parsed_args.load_zone, parsed_args.stage, parsed_args.starting_tmp, parsed_args.ending_tmp) df = get_plotting_data(conn=conn, scenario_id=scenario_id, load_zone=parsed_args.load_zone, starting_tmp=parsed_args.starting_tmp, ending_tmp=parsed_args.ending_tmp, stage=parsed_args.stage) plot = create_plot( df=df, title=plot_title, power_unit=power_unit, tech_colors=tech_colors, tech_plotting_order=tech_plotting_order, ylimit=parsed_args.ylimit, ) # Show plot in HTML browser file if requested if parsed_args.show: show_plot(plot=plot, plot_name=plot_name, plot_write_directory=parsed_args.plot_write_directory, scenario=scenario) # Return plot in json format if requested if parsed_args.return_json: return json_item(plot, "plotHTMLTarget")
def main(args=None): """ Parse the arguments, get the data in a df, and create the plot :return: if requested, return the plot as JSON object """ if args is None: args = sys.argv[1:] parsed_args = parse_arguments(arguments=args) conn = connect_to_database(db_path=parsed_args.database) c = conn.cursor() scenario_id, scenario = get_scenario_id_and_name( scenario_id_arg=parsed_args.scenario_id, scenario_name_arg=parsed_args.scenario, c=c, script="curtailment_variable_heatmap_plot", ) energy_unit = get_unit(c, "energy") plot_title = "{}VER Curtailment by Month-Hour - {} - {} - {}".format( "{} - ".format(scenario) if parsed_args.scenario_name_in_title else "", parsed_args.load_zone, parsed_args.period, parsed_args.stage, ) plot_name = "VariableCurtailmentPlot-{}-{}-{}".format( parsed_args.load_zone, parsed_args.period, parsed_args.stage) df = get_plotting_data( conn=conn, scenario_id=scenario_id, load_zone=parsed_args.load_zone, period=parsed_args.period, stage=parsed_args.stage, ) plot = create_plot(df=df, title=plot_title, energy_unit=energy_unit, ylimit=parsed_args.ylimit) # Show plot in HTML browser file if requested if parsed_args.show: show_plot( plot=plot, plot_name=plot_name, plot_write_directory=parsed_args.plot_write_directory, scenario=scenario, ) # Return plot in json format if requested if parsed_args.return_json: return json_item(plot, "plotHTMLTarget")
def main(args=None): """ Parse the arguments, get the data in a df, and create the plot :return: if requested, return the plot as JSON object """ if args is None: args = sys.argv[1:] parsed_args = parse_arguments(arguments=args) conn = connect_to_database(db_path=parsed_args.database) c = conn.cursor() scenario_id, scenario = get_scenario_id_and_name( scenario_id_arg=parsed_args.scenario_id, scenario_name_arg=parsed_args.scenario, c=c, script="capacity_factor_plot", ) tech_colors = get_tech_colors(c) plot_title = "{}Capacity Factors by Period - {} - Stage {}".format( "{} - ".format(scenario) if parsed_args.scenario_name_in_title else "", parsed_args.load_zone, parsed_args.stage, ) plot_name = "CapFactorPlot-{}-{}".format(parsed_args.load_zone, parsed_args.stage) df = get_plotting_data( conn=conn, scenario_id=scenario_id, load_zone=parsed_args.load_zone, stage=parsed_args.stage, ) plot = create_plot(df=df, title=plot_title, tech_colors=tech_colors) # Show plot in HTML browser file if requested if parsed_args.show: show_plot( plot=plot, plot_name=plot_name, plot_write_directory=parsed_args.plot_write_directory, scenario=scenario, ) # Return plot in json format if requested if parsed_args.return_json: return json_item(plot, "plotHTMLTarget")
def main(args=None): """ Parse the arguments, get the data in a df, and create the plot :return: if requested, return the plot as JSON object """ if args is None: args = sys.argv[1:] parsed_args = parse_arguments(arguments=args) conn = connect_to_database(db_path=parsed_args.database) tech_colors = get_tech_colors(conn.cursor()) tech_plotting_order = get_tech_plotting_order(conn.cursor()) power_unit = get_unit(conn.cursor(), "power") plot_title = "Total Capacity by Scenario - {} - Subproblem {} - Stage {}"\ .format( parsed_args.load_zone, parsed_args.subproblem, parsed_args.stage ) plot_name = "TotalCapacityPlot-{}-{}-{}"\ .format( parsed_args.load_zone, parsed_args.subproblem, parsed_args.stage ) df = get_plotting_data(conn=conn, period=parsed_args.period, load_zone=parsed_args.load_zone, subproblem=parsed_args.subproblem, stage=parsed_args.stage) source, x_col_reordered = process_stacked_plot_data( df=df, y_col="capacity_mw", x_col=["period", "scenario_id"], category_col="technology") # Multi-level index in CDS will be joined into one column with "_" separator x_col_cds = "_".join(x_col_reordered) x_col_label = ", ".join([x.capitalize() for x in x_col_reordered]) plot = create_stacked_bar_plot( source=source, x_col=x_col_cds, x_label=x_col_label, y_label="Total Capacity ({})".format(power_unit), category_label="Technology", category_colors=tech_colors, category_order=tech_plotting_order, title=plot_title, ylimit=parsed_args.ylimit) # Show plot in HTML browser file if requested if parsed_args.show: show_plot(plot=plot, plot_name=plot_name, plot_write_directory=parsed_args.plot_write_directory) # Return plot in json format if requested if parsed_args.return_json: return json_item(plot, plot_name)
def main(args=None): """ Parse the arguments, get the data in a df, and create the plot :return: if requested, return the plot as JSON object """ if args is None: args = sys.argv[1:] parsed_args = parse_arguments(arguments=args) conn = connect_to_database(db_path=parsed_args.database) c = conn.cursor() scenario_id, scenario = get_scenario_id_and_name( scenario_id_arg=parsed_args.scenario_id, scenario_name_arg=parsed_args.scenario, c=c, script="project_operations_plot", ) power_unit = get_unit(c, "power") plot_title = "{}Operations Plot - {} - {} - Stage {}".format( "{} - ".format(scenario) if parsed_args.scenario_name_in_title else "", parsed_args.project, parsed_args.period, parsed_args.stage, ) plot_name = "OperationsPlot-{}-{}-{}".format(parsed_args.project, parsed_args.period, parsed_args.stage) start = parsed_args.horizon_start end = parsed_args.horizon_end if start is not None and end is not None: appendix = " - Horizon {}-{}".format(start, end) elif start is not None and end is None: appendix = " - Horizon {}-end".format(start) elif start is None and end is not None: appendix = " - Horizon start-{}".format(end) else: appendix = "" plot_title += appendix df = get_plotting_data( conn=conn, scenario_id=scenario_id, project=parsed_args.project, period=parsed_args.period, stage=parsed_args.stage, horizon_start=parsed_args.horizon_start, horizon_end=parsed_args.horizon_end, ) plot = create_plot(df=df, title=plot_title, power_unit=power_unit, ylimit=parsed_args.ylimit) # Show plot in HTML browser file if requested if parsed_args.show: show_plot( plot=plot, plot_name=plot_name, plot_write_directory=parsed_args.plot_write_directory, scenario=scenario, ) # Return plot in json format if requested if parsed_args.return_json: return json_item(plot, "plotHTMLTarget")