Choose a chart type

Choose a chart to answer an economic question: how an outcome evolves, how regions compare, or how simulation layers contribute to an experiment’s result. Start with the real model-run examples: GDP and inflation paths, regional GDP bars and sector-output panels from a saved 2A baseline. Use lines when the timing of an adjustment matters. For experiment results, prefer selected-year deviation bars and heatmaps centred on zero; use compositions and waterfalls only with suitable additive data.

A series is one row of observations in the projections CSV, such as inflation in the USA. A dimension is a model set, such as regions or sectors. Its members are the codes in that set. A chartpack selects these rows and their presentation; it does not run an experiment or calculate new model results.

Economic question Chart type YAML setting
How does an outcome evolve? Line Omit chart_type
How much does it change between two years? Change between years chart_type: series-delta
How do regions or sectors compare in one year? Single-year bars chart_type: series-value
Where are outcomes high or low across sets and years? Heatmap chart_type: heatmap
How do many time paths compare? Small multiples chart_type: small-multiples
How do two measures relate? Paired scatter chart_type: paired-scatter
How do parts of a total change over time? Stacked areas chart_type: composition-area
What shares make up a total? Stacked bars chart_type: composition-bar
How do ordered simulation layers lead to the final result? Waterfall chart_type: waterfall

Explore the chart types

The 11 charts below and their YAML are copied from the latest template builder’s chart-types guide, reviewed on 25 September 2026. All observations are synthetic. Names beginning with SYNTH are teaching examples, not built-in G-Cubed variables. The regional labels are illustrative too.

Download all example chart declarations and the matching sample CSV. Each chart also has its own complete YAML download. Use the same sample CSV with any individual example. Titles, plots and captions below follow the report card order.

Open the interactive chart guide to explore 22 rendered states, including Year, View, Observations and Display previews. Save that self-contained page to use it offline. Its preview selectors swap pre-rendered SVGs; a generated report recalculates its charts, tables and exports. Preview Axes is an authoring demonstration, not a report dropdown: change x_dimension and y_dimension in YAML to transpose a heatmap. The YAML downloads describe each chart’s initial state.

To assemble a chartpack from the entries shown below, begin with this header once, then add your chosen - chart: entries in presentation order:

- chartpack:
    format: gcubed-chartpack
    version: "1.4.0"
    title: Illustrative experiment results
    sector_selection_dimensions: [sectors, layers]
    defaults:
      start_year: 2025
      end_year: 2035

This header uses dimensions present in the sample CSV. For a real experiment, replace the SYNTH names, dimensions, years, captions and units with those in your own results. Omit sector_selection_dimensions if you want the usual sector and goods choices. Copy the standalone declarations into a chartpack file, rather than into the differently structured setup.yaml.

These examples use chartpack "1.4.0". Lines are available in every supported version; delta bars were added in "1.2.0". The other types and the newer controls require 1.4 support. Check both the reporting package and the report template.

Show a trend with lines

Each line follows one region through time. The example uses an activity index with 2025 equal to 100. Its level shows activity relative to that reference year; it is not a percentage deviation from a G-Cubed baseline.

Leave out chart_type; chart_type: line is not an accepted declaration. Selected series must have common units. Missing observations remain gaps.

Illustrative activity paths
Illustrative regional activity indices from 2025 to 2035.

Synthetic regional activity paths use complete annual observations; real gaps remain gaps.

- chart:
    title: Illustrative activity paths
    caption: Synthetic regional activity paths use complete annual observations; real gaps remain gaps.
    x_axis:
      label: Year
    y_axis:
      label: Activity index (2025 = 100)
    series:
    - variable: SYNTHINDEX(USA)
      label: Illustrative North
    - variable: SYNTHINDEX(JPN)
      label: Illustrative East
    - variable: SYNTHINDEX(ROW)
      label: Illustrative Rest

Download this complete chartpack · Download the matching sample CSV.

Change between two years

The bar for each region is its 2035 index minus its 2025 index. Teal marks an increase, rust a decrease, and the neutral colour marks zero. These are index-point changes, not growth rates. The chart inherits its two years from the header above and sorts bars from the largest change to the smallest.

With experiment deviation data, the same declaration shows the change in the deviation between two years. For example, a GDP deviation moving from −2% to −1% gives a difference of +1 percentage point. To show the deviation in 2035 itself, use the single-year chart below.

All bars must share a variable prefix, units and ordered dimensions, varying across at most one set. Both endpoint values must be available. See delta endpoints to use different years for one bar.

Activity change, 2025–2035
Positive, negative and zero changes in illustrative activity indices, 2025–2035.

Teal marks positive change, rust negative change, and neutral zero; labels retain the authored units.

- chart:
    title: Activity change, 2025–2035
    chart_type: series-delta
    show_labels: true
    color_by_sign: true
    caption: Teal marks positive change, rust negative change, and neutral zero; labels retain the authored units.
    orientation: horizontal
    sort: value-descending
    x_axis:
      label: Change in activity index points
      min: -10
      max: 20
    y_axis:
      label: Region
    series:
    - variable: SYNTHINDEX(USA)
      label: Illustrative North
    - variable: SYNTHINDEX(JPN)
      label: Illustrative East
    - variable: SYNTHINDEX(ROW)
      label: Illustrative Rest

Download this complete chartpack · Download the matching sample CSV.

Compare values in one year

These bars compare sector output in 2030, measured in US$ billion at 2025 prices. year chooses the initial year. Bars are horizontal by default; sort: value-descending places larger values first. A Year control appears when at least two eligible years are available.

On a baseline-deviation CSV, this chart instead shows each series’ deviation from baseline in the selected year. Its units come from that CSV. Series must share units, but may have different prefixes and dimension structures.

Illustrative North sector output in 2030
Illustrative North sector output in 2030, in US$ billion at 2025 prices.

A report card offers every eligible year and refreshes its title, table, and exports together.

- chart:
    title: Illustrative North sector output in 2030
    chart_type: series-value
    show_labels: true
    year: 2030
    caption: A report card offers every eligible year and refreshes its title, table, and exports together.
    sort: value-descending
    x_axis:
      label: Sector output (US$ billion, 2025 prices)
      min: 0
    y_axis:
      label: Sector
    series:
    - variable_prefix: SYNTHSECTOR
      selectors:
        sectors: all
        regions: USA

Download this complete chartpack · Download the matching sample CSV.

Compare two dimensions in a heatmap

A heatmap uses colour to show values. In this first example, rows are regions and columns are years. The neutral colour marks the reference index value of

  1. A midpoint changes the colour scale; it does not convert observations into indices, shares or deviations.

Use different x_dimension and y_dimension keys. Selected rows must share one prefix, units and ordered dimensions; every dimension outside the axes must stay fixed. Missing observations leave blank cells, while zero remains a value. Duplicate cells are invalid: the chart does not add them together. A time-axis heatmap cannot have a chart-level year or year_selector.

Activity by region and year
Heatmap of illustrative activity indices by region and year, centred on 100.

A semantic diverging palette anchors the authored midpoint; a time-axis heatmap has no Year control.

- chart:
    title: Activity by region and year
    chart_type: heatmap
    show_labels: true
    x_dimension: year
    y_dimension: regions
    x_axis:
      label: Year
    y_axis:
      label: Region
    color_axis:
      min: 95
      max: 115
      midpoint: 100
      palette: semantic-diverging
    caption: A semantic diverging palette anchors the authored midpoint; a time-axis heatmap has no Year control.
    series:
    - variable_prefix: SYNTHINDEX
      selectors:
        regions: all

Download this complete chartpack · Download the matching sample CSV.

Compare regions and sectors in one year

This second heatmap places regions on one axis and sectors on the other. With two model dimensions, year is required. year_selector: true lets the reader choose another eligible year. The pale-to-teal scale suits these nonnegative output levels.

The report’s table follows the same row-and-column layout. Related heatmaps can share a View control; see heatmap colours and views.

Sector output by region in 2030
Matrix of illustrative sector output by region in 2030.

Two model dimensions form a matrix; the report Year control retains the authored measure and bounds.

- chart:
    title: Sector output by region in 2030
    chart_type: heatmap
    show_labels: true
    x_dimension: regions
    y_dimension: sectors
    x_axis:
      label: Region
    y_axis:
      label: Sector
    year: 2030
    year_selector: true
    color_axis:
      min: 0
      palette: semantic-sequential
    caption: Two model dimensions form a matrix; the report Year control retains the authored measure and bounds.
    series:
    - variable_prefix: SYNTHSECTOR
      selectors:
        sectors: all
        regions: all

Download this complete chartpack · Download the matching sample CSV.

Open the grouped View example and download its complete chartpack. Use the same sample CSV.

The first view puts years on an axis. The second uses regions and sectors, so it offers a separate Year control. Each view retains its own measure, units and colour scale: the first shows an activity index, the second output levels. Switching View does not convert one measure into the other. The two adjacent chart definitions share view_group and have distinct view_label values. See the grouping rules.

Give each member its own small chart

Each region receives a panel, with a line for each sector. All panels share the same year and value scales, making differences in both size and timing comparable. This helps when a single plot would have too many lines.

facet_dimension selects the set used to separate panels. The optional group_dimension selects the lines within each panel. Both must be different model dimensions. Rows must share one prefix, units and ordered dimensions; other dimensions must stay fixed. A sector keeps the same colour across panels. Missing observations remain gaps.

Sector output paths by region
Sector output paths in three regional panels with shared scales.

Small multiples share time and value scales so magnitude and shape remain comparable across facets.

- chart:
    title: Sector output paths by region
    chart_type: small-multiples
    facet_dimension: regions
    group_dimension: sectors
    x_axis:
      label: Year
    y_axis:
      label: Sector output (US$ billion, 2025 prices)
      min: 0
    caption: Small multiples share time and value scales so magnitude and shape remain comparable across facets.
    series:
    - variable_prefix: SYNTHSECTOR
      selectors:
        sectors: all
        regions: all

Download this complete chartpack · Download the matching sample CSV.

Compare two measures

Each point pairs a region’s activity index with its emissions in 2030. The X and Y axes have different units: an index and Mt CO2-e. This plot shows association; it does not establish that one outcome causes the other.

Write each pair using exact x_variable and y_variable names. Selectors cannot create these pairs. Both values must be available in the selected year, and shared dimensions must use the same member: pair USA activity with USA emissions. A dimension used on only one axis, such as a gas, must stay fixed across pairs. All X observations share one unit; all Y observations share another. The Year control moves the pairs together.

Activity and emissions in 2030
Illustrative activity index against emissions for three regions in 2030.

A report Year control moves every complete regional X/Y pair together while preserving fixed axes.

- chart:
    title: Activity and emissions in 2030
    chart_type: paired-scatter
    show_labels: true
    year: 2030
    year_selector: true
    caption: A report Year control moves every complete regional X/Y pair together while preserving fixed axes.
    x_axis:
      label: Activity index (2025 = 100)
      min: 95
      max: 110
    y_axis:
      label: Emissions (Mt CO2-e)
      min: 0
      max: 65
    series:
    - x_variable: SYNTHINDEX(USA)
      y_variable: SYNTHEMISSIONS(USA)
      label: Illustrative North
    - x_variable: SYNTHINDEX(JPN)
      y_variable: SYNTHEMISSIONS(JPN)
      label: Illustrative East
    - x_variable: SYNTHINDEX(ROW)
      y_variable: SYNTHEMISSIONS(ROW)
      label: Illustrative Rest

Download this complete chartpack · Download the matching sample CSV.

Follow two measures through time

With exactly one pair, observation_mode: selectable begins with its path through time. The plotted points use existing annual observations in the selected range, connected in chronological order. Years lacking either value are omitted; no missing values are estimated. Connections do not establish causality.

The Observations control switches between Across years and Single year. year is still required for the single-year view. Do not combine this mode with year_selector: false.

Illustrative North activity and emissions trajectory
Illustrative North activity and emissions trajectory, with observations labelled by year.

Across years connects existing annual observations chronologically; Single year restores the authored point.

- chart:
    title: Illustrative North activity and emissions trajectory
    chart_type: paired-scatter
    show_labels: true
    year: 2030
    observation_mode: selectable
    x_axis:
      label: Activity index (2025 = 100)
      min: 95
      max: 115
    y_axis:
      label: Emissions (Mt CO2-e)
      min: 0
      max: 65
    caption: Across years connects existing annual observations chronologically; Single year restores the authored point.
    series:
    - x_variable: SYNTHINDEX(USA)
      y_variable: SYNTHEMISSIONS(USA)
      label: Illustrative North

Download this complete chartpack · Download the matching sample CSV.

Show parts of a total over time

The stacked areas show sector output adding to a sector output total in each year. Gross sector output is not a decomposition of GDP: intermediate production is included. Use the measure and price basis appropriate to the economic question.

reconciliation.total_variable identifies the row containing the total. Components must be complete, nonnegative, use common units and a common prefix and ordered dimensions, and vary across at most one set. The total must have the same units and regional coverage. They must add up in every displayed year; the example’s zero tolerance requires exact equality.

display_selector: true offers stacked areas or bars. Hiding components produces a partial-composition notice. Percentage deviations from baseline are not additive components. Prepare suitable levels or shares before making this chart; see choosing report data.

Illustrative North sector output total
Illustrative North sector output stacked into its total from 2025 to 2035.

Complete additive levels reconcile to the authored total; Display switches area and bars without changing data.

- chart:
    title: Illustrative North sector output total
    chart_type: composition-area
    show_labels: true
    display_selector: true
    x_axis:
      label: Year
    y_axis:
      label: Sector output (US$ billion, 2025 prices)
      min: 0
    caption: Complete additive levels reconcile to the authored total; Display switches area and bars without changing data.
    reconciliation:
      total_variable: SYNTHTOTAL(USA)
      absolute_tolerance: 0
    series:
    - variable_prefix: SYNTHSECTOR
      selectors:
        sectors: all
        regions: USA

Download this complete chartpack · Download the matching sample CSV.

Show parts of a total as bars

The example begins with one stacked bar for 2035. Its component shares are already percentages that add to 100; reconciliation.total: 100 checks that sum. The template does not calculate or normalise shares.

Use year together with year_selector: true to begin with one year and allow selection of other valid years. Without year, compositions show their whole start-to-end range, even if a Year control is enabled. A fixed single-year bar can also use equal start_year and end_year bounds. The same completeness and additivity rules apply as for stacked areas.

Illustrative North sector output shares in 2035
Illustrative North sector output shares adding to 100 percent in 2035.

Choose one eligible year and either stacked display; the synthetic shares continue to reconcile to 100 percent.

- chart:
    title: Illustrative North sector output shares in 2035
    chart_type: composition-bar
    show_labels: true
    year: 2035
    year_selector: true
    display_selector: true
    x_axis:
      label: Year
    y_axis:
      label: Share (%)
      min: 0
      max: 100
    caption: Choose one eligible year and either stacked display; the synthetic shares continue to reconcile to 100 percent.
    reconciliation:
      total: 100
      absolute_tolerance: 0
    series:
    - variable_prefix: SYNTHSHARE
      selectors:
        sectors: all
        regions: USA

Download this complete chartpack · Download the matching sample CSV.

Explain a change step by step

The waterfall shows how ordered simulation layers bridge the baseline and the final experiment result in 2030. Its synthetic contributions satisfy 0 − 12 − 9 + 10 + 3 = −8, in US$ billion at 2025 prices.

Use one start, then one or more contribution entries, then one total. Contributions must be changes from each immediately preceding simulation layer, expressed in common additive units. Adding each layer’s cumulative deviation from baseline would count earlier effects more than once. The allocation of contributions depends on the order of the layers.

The source CSV must already contain these contribution rows. A selector retains CSV row order; use exact variables in the required order when that order differs. All nonblank region metadata must agree. The complete sequence must add to its stated total; one missing or invalid step rejects the chart. Filters hide the whole waterfall rather than leaving a partial decomposition.

The sample provides complete contributions for 2025 and 2030, so its Year control offers both years. The 2025 contributions reconcile as 0 − 10 − 7 + 8 + 3 = −6. Other years have missing contributions and are not offered. Try both years in the waterfall preview.

Here level_base: 100 adds 100 to the cumulative change in the visible table’s Level column. It requires a zero start and leaves the plotted changes and CSV unchanged. For an experiment, use the appropriate baseline level in the same units. See preparing layer contributions.

Ordered policy-layer contribution in 2030
Ordered synthetic policy-layer contributions from zero to a final change of minus 8.

Ordered contributions reconcile from zero; the report table derives an absolute level from base 100.

- chart:
    title: Ordered policy-layer contribution in 2030
    chart_type: waterfall
    show_labels: true
    year: 2030
    year_selector: true
    level_base: 100
    caption: Ordered contributions reconcile from zero; the report table derives an absolute level from base 100.
    x_axis:
      label: Policy layer
    y_axis:
      label: GDP change (US$ billion, 2025 prices)
      min: -25
      max: 5
    series:
    - variable: SYNTHGDPCHANGE(BASELINE,USA)
      label: Baseline
      role: start
    - variable_prefix: SYNTHGDPCONTRIBUTION
      selectors:
        regions: USA
      role: contribution
    - variable: SYNTHGDPCHANGE(PACKAGE,USA)
      label: Final package
      role: total

Download this complete chartpack · Download the matching sample CSV.

Continue with your experiment

Use display options for captions, labels, colours and report controls, and validation and troubleshooting when a chart does not appear. Alternative deterministic experiments are not uncertainty intervals; fan charts are not part of this release.