Example #1
0
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)
Example #2
0
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")
Example #3
0
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")
Example #5
0
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")