How-to: Add Chart to the Report

It is possible to add charts to sheets that are written to report output. These charts are always added to the last column in the report, which is automatically created and resized to fit all the charts. These charts use data from the whole columns as series or labels (domains).

To add a chart, pass its definition in the embedded_charts argument of ppc_robot_lib.output.types.Table. Each chart definition consists from two objects: an ppc_robot_lib.output.charts.EmbeddedChart instance that defines chart width and height, and an instance of subclass of ppc_robot_lib.output.charts.ChartSpec, that defines the chart type and parameters.

Currently, there is only one ppc_robot_lib.output.charts.ChartSpec subclass: line chart represented by ppc_robot_lib.output.charts.LineChart.

Example:

from ppc_robot_lib.output.types import Table
from ppc_robot_lib.output.charts import EmbeddedChart, LineChart, LineType, LineStyle
from ppc_robot_lib.utils.types import Color

line_chart = LineChart(
    title='Impressions over time',
    subtitle='Number of impressions in the whole account per day',
    domain_column='Date',
    bottom_axis_title='Day',
    left_axis_title='Impression Count',
)
line_chart.add_series(
    column='Impressions',
    color=Color(0xCC0000),
    line_style=LineStyle(3, LineType.MEDIUM_DASHED)
)

table = Table(
    table_name='daily_impressions',
    sheet_name='Impressions by day',
    # ...
    embedded_charts=[
        EmbeddedChart(
            spec=line_chart,
            width=800,
            height=600,
        )
    ]
)

Please note that the chart is embedded as an interactive object in the target sheet and rendered directly in web browser or Excel. This means that all referenced columns must be part of the output.